unix环境高级编程-进程间通信(2)
来源:互联网 发布:湖南自兴人工智能学院 编辑:程序博客网 时间:2024/05/17 03:46
函数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用作汇聚点,在客户进程和服务器进程两者之间传递数据。
- unix环境高级编程-进程间通信(2)
- unix环境高级编程-进程间通信
- 《UNIX环境高级编程》十七高级进程间通信读书笔记
- 《Unix环境高级编程》之 进程通信
- UNIX环境高级编程——进程间通信概念
- UNIX环境高级编程——进程间通信概念
- 《unix高级环境编程》进程间通信——信号量
- 《unix高级环境编程》进程间通信——信号量
- UNIX环境C语言编程(13)-高级进程间通信
- UNIX环境高级编程第十五章 进程间通信 总结
- 《UNIX环境高级编程》十五进程间通信读书笔记
- unix环境高级编程--进程间通信机制
- 《UNIX环境高级编程》第15章 进程间通信
- Unix环境高级编程学习笔记(十二) 高级进程间通信
- Unix环境高级编程学习笔记(十二) 高级进程间通信
- UNIX环境高级编程(第17章 高级进程间通信)
- Unix环境高级编程学习笔记(十) 进程间通信
- UNIX环境高级编程(第15章 进程间通信)
- 用数组模拟邻接表
- Oak先生-SurfaceView模拟游戏组合图形移动动画
- hdu 1176 (免费馅饼)
- HDULive 7270
- Qt---为窗体添加滚动条:QScrollArea
- unix环境高级编程-进程间通信(2)
- oracle invalide number错误
- 线段树 A Simple Problem with Integers
- java旅行第二站--JavaSE第六天--遍历目录
- POJ 2576 Tug of War
- POJ Problem 1745 Divisibility 【dp】
- Android学习之路-------Frangment碎片
- 1052 Tian Ji -- The Horse Racing
- Tickets(DP)