企业网站在线超市,北京餐饮网络营销公司,python做一个简单的网页,免费软件网站建设【C】郭老二博文之#xff1a;C目录
1、Poco::Process 进程
1.1 说明
Poco::Process的功能#xff1a;
获取有关当前进程的一些信息开始一个新的进程终止另一个进程
1.2 用法
头文件#xff1a;#include “Poco/Process.h” Poco::Process中的所有方法都是静态的。
常…【C】郭老二博文之C目录
1、Poco::Process 进程
1.1 说明
Poco::Process的功能
获取有关当前进程的一些信息开始一个新的进程终止另一个进程
1.2 用法
头文件#include “Poco/Process.h” Poco::Process中的所有方法都是静态的。
常用函数 1Poco::Process::PID Process::id()返回当前线程的进程ID 2Poco::Process::times(long userTime, long kernelTime)返回当前进程分别在用户模式和内核模式下执行的秒数 3Poco::ProcessHandle Process::launch(const std::string path, const std::vectorstd::string args) 创建一个新线程这个线程是通过path指定的可执行文件命令行参数通过args来传递。 4Poco::ProcessHandle有两个成员函数:
id() 返回新创建进程的进程id。wait() 等待进程终止并返回进程退出码
5ProcessHandle Process::launch(const std::string path, const std::vectorstd::string args, Pipe* inPipe, Pipe* outPipe, Pipe* errPipe) Poco::Pipe用于新进程的标准输入、标准输出和标准错误通道。
2、Poco::Pipe 管道
2.1 说明
Poco::Pipe是单向(半双工)通信通道也就是说数据只在一个方向上流动。
2.2 用法
头文件#include “Poco/PipeStream.h” 通常不直接使用Poco::Pipe而是使用输入、输出管道流PipeStream Poco::PipeInputStream输入管道 Poco::PipeOutputStream输出管道
2.3 示例
$ vi pipe.cpp
#include Poco/Process.h
#include Poco/PipeStream.h
#include Poco/StreamCopier.h
#include fstreamusing Poco::Process;
using Poco::ProcessHandle;int main(int argc, char** argv)
{std::string cmd(/bin/ps);std::vectorstd::string args;args.push_back(-ax);Poco::Pipe outPipe;ProcessHandle ph Process::launch(cmd, args, 0, outPipe, 0);Poco::PipeInputStream istr(outPipe);std::ofstream ostr(processes.txt);Poco::StreamCopier::copyStream(istr, ostr);return 0;
}编译
g pipe.cpp -I ~/git/poco/install/include -L ~/git/poco/install/lib -lPocoFoundationd -lpthread3、进程间通讯
3.1 说明
POCO为进程间同步提供了两个方法:
Poco::NamedMutexPoco::NamedEvent
3.2 用法
头文件
#include “Poco/NamedMutex.h”#include “Poco/NamedEvent.h” 这个两个方法类似于线程同步原语Poco::Mutex和Poco::Event
常用方法和互斥锁相似 1void Poco::NamedMutex::lock() 2bool Poco::NamedMutex:: tryLock() 3void Poco::NamedMutex:: unlock() 4模板类ScopedLock(M mutex)方便加解锁
Poco::NamedEvent 有两个操作: 5void NamedEvent::set() 6void NamedEvent::wait()
4、Poco::SharedMemory 共享内存
4.1 说明
共享内存区域可以通过两种方式创建:
创建指定大小的命名内存区域文件可以映射到共享内存区域
4.2 用法
头文件#include “Poco/SharedMemory.h”
begin()和end()成员函数分别返回一个指针指向共享内存区域的开始位置和结束位置。
4.3 示例1文件映射
$ vi smFile.cpp
#include Poco/SharedMemory.h
#include Poco/File.h
#include iostreamusing Poco::SharedMemory;
using Poco::File;int main(int argc, char** argv)
{File f(smFile.cpp);SharedMemory mem(f, SharedMemory::AM_READ); // read-only accessfor (char* ptr mem.begin(); ptr ! mem.end(); ptr){std::cout *ptr;}return 0;
}编译
g smFile.cpp -I ~/git/poco/install/include -L ~/git/poco/install/lib -lPocoFoundationd -lpthread运行后将会把smFile.cpp文件打印到终端
4.4 示例2共享内存区域
#include Poco/SharedMemory.h
using Poco::SharedMemory;int main(int argc, char** argv)
{SharedMemory mem(MySharedMemory, 1024,SharedMemory::AM_READ | SharedMemory::AM_WRITE);for (char* ptr mem.begin(); ptr ! mem.end(); ptr){*ptr 0;}return 0;
}