unix环境高级编程-进程间通信(2)
2016-08-08 21:36
197 查看
函数popen和pclose:
常见的操作是创建一个连接到另一个进程的管道,然后读其输出或向其输入端发送数据,这两个函数实现的操作是:创建一个管道,fork一个子进程,关闭未使用的管道端,执行一个shell运行命令,然后等待命令终止。
函数popen执行fork,调用exec执行cmdstring,返回一个标准IO文件指针,如果type是r,则文件指针连接到cmdstring的标准输出,而如果type是w,则文件指针连接都cmdstring的标准输入,这两者情况如下图所示
这种情况和fopen类似,如果type是r,则返回的文件指针是可读的,如果type是w,则是可写的。
pcolse函数关闭标准IO流,等待命令终止,然后返回shell终止状态。
协同进程:
unix系统过滤程序从标准输入读取数据,向标准输出写数据,几个过滤程序通常在shell管道中线性连接,当一个过滤程序既产生某个过滤程序的输入,又读取该过滤程序的输出时,它就变成了协同进程。
FIFO:被称为命名管道,未命名的管道只能在两个相关的进程之间使用,而且这两个相关的进程还有一个共同创建了它们的祖先进程,但是通过FIFO,不相关的进程也能交换数据。
FIFO是一种文件类型,通过stat结构的st_mode成员的编码可以知道是否是FIFO类型。
mkfifo函数中mode参数的规格说明和open函数的mode相同
mkfifoat函数和mkfifo类似,但是mkfifoat函数可以被用来在fd文件描述符表示的目录相关位置创建一个FIFO。
FIFO有以下两种用途:
1.shell命令使用FIFO将数据从一条管道传送到另一条时,无需创建中间临时文件。
2.客户进程-服务器进程应用程序中,FIFO用作汇聚点,在客户进程和服务器进程两者之间传递数据。
常见的操作是创建一个连接到另一个进程的管道,然后读其输出或向其输入端发送数据,这两个函数实现的操作是:创建一个管道,fork一个子进程,关闭未使用的管道端,执行一个shell运行命令,然后等待命令终止。
函数popen执行fork,调用exec执行cmdstring,返回一个标准IO文件指针,如果type是r,则文件指针连接到cmdstring的标准输出,而如果type是w,则文件指针连接都cmdstring的标准输入,这两者情况如下图所示
这种情况和fopen类似,如果type是r,则返回的文件指针是可读的,如果type是w,则是可写的。
pcolse函数关闭标准IO流,等待命令终止,然后返回shell终止状态。
协同进程:
unix系统过滤程序从标准输入读取数据,向标准输出写数据,几个过滤程序通常在shell管道中线性连接,当一个过滤程序既产生某个过滤程序的输入,又读取该过滤程序的输出时,它就变成了协同进程。
FIFO:被称为命名管道,未命名的管道只能在两个相关的进程之间使用,而且这两个相关的进程还有一个共同创建了它们的祖先进程,但是通过FIFO,不相关的进程也能交换数据。
FIFO是一种文件类型,通过stat结构的st_mode成员的编码可以知道是否是FIFO类型。
mkfifo函数中mode参数的规格说明和open函数的mode相同
mkfifoat函数和mkfifo类似,但是mkfifoat函数可以被用来在fd文件描述符表示的目录相关位置创建一个FIFO。
FIFO有以下两种用途:
1.shell命令使用FIFO将数据从一条管道传送到另一条时,无需创建中间临时文件。
2.客户进程-服务器进程应用程序中,FIFO用作汇聚点,在客户进程和服务器进程两者之间传递数据。
相关文章推荐
- UNIX环境高级编程学习之第十五章进程间通信 - 系统V 共享内存使用(使用信号灯保护共享内存)
- UNIX环境高级编程-第15章- 进程间通信 - 一
- UNIX环境高级编程(第15章 进程间通信)
- UNIX:高级环境编程 - 第十五章 IPC:进程间通信
- UNIX环境高级编程 第17章 高级进程间通信
- UNIX环境高级编程学习之第十五章进程间通信 - 通过半双工匿名管道实现父子进程通信
- UNIX环境高级编程笔记——高级IO,进程间通信,套接字,高级进程间通信
- Unix环境高级编程(十八)高级进程间通信
- unix环境高级编程-进程间通信
- UNIX环境高级编程学习之第十五章进程间通信 - 通过消息队列实现进程间通信
- unix环境高级编程--进程间通信机制
- UNIX环境高级编程-第17章- 高级进程间通信 - 一
- (十二) 一起学 Unix 环境高级编程 (APUE) 之 进程间通信(IPC)
- UNIX环境高级编程学习之第十五章进程间通信 - 通过有名管道(命名管道)实现进程间通信
- UNIX环境高级编程 第十五章:进程间通信:是指在不同进程之间传播或交换信息
- UNIX环境C语言编程(13)-高级进程间通信
- UNIX环境高级编程 第15章 进程间通信
- UNIX环境高级编程-第15章- 进程间通信 - 二
- UNIX环境高级编程学习之第十五章进程间通信 - 两个进程通过映射普通文件实现共享内存通信
- UNIX环境高级编程学习之第十五章进程间通信 - 信号量的使用(信号灯的使用, 计算信号灯)