Linux进程通信 标准流管道
2011-06-23 15:55
295 查看
与Linux中文件操作流的标准I/O类似,管道操作也支持基于文件流的模式。
标准流管道就像一系列的创建过程合并到一个函数popen中完成。它所完成的工作主要有以下几步:
1.创建一个管道
2.fork一个子进程
3.在父子进程中关闭不需要的文件描述符。
4.执行exec函数族调用
5.执行函数中所指定的指令
这个函数的使用可以大大减少代码的编写量,但同时也有一些不利之处,例如,它没有前面管道创建的函数灵活多样,并且用popen创建的管道必须使用标准I/O函数进行操作,但不能使用前面的read、write一类不带缓冲的I/O函数与之对应,关闭用popen创建的流管道必须使用函数pclose来关闭该管道流。该函数关闭标准I/O流,并等待命令执行结束。
1.表头文件
#include <
stdio.h>
2.原函数
FILE *popen(char *command,char *type);
返回值:成功,返回一个新的文件流,失败,返回NULL
参数:command是所要执行的命令,type控制数据流的方向,r或者w
3.关闭
int pclose(FILE *stream);
4.代码
5输出
Thu Jun 23 01:49:13 PDT 2011
标准流管道就像一系列的创建过程合并到一个函数popen中完成。它所完成的工作主要有以下几步:
1.创建一个管道
2.fork一个子进程
3.在父子进程中关闭不需要的文件描述符。
4.执行exec函数族调用
5.执行函数中所指定的指令
这个函数的使用可以大大减少代码的编写量,但同时也有一些不利之处,例如,它没有前面管道创建的函数灵活多样,并且用popen创建的管道必须使用标准I/O函数进行操作,但不能使用前面的read、write一类不带缓冲的I/O函数与之对应,关闭用popen创建的流管道必须使用函数pclose来关闭该管道流。该函数关闭标准I/O流,并等待命令执行结束。
1.表头文件
#include <
stdio.h>
2.原函数
FILE *popen(char *command,char *type);
返回值:成功,返回一个新的文件流,失败,返回NULL
参数:command是所要执行的命令,type控制数据流的方向,r或者w
3.关闭
int pclose(FILE *stream);
4.代码
#include<sys/types.h> #include<unistd.h> #include<stdio.h> #include<stdlib.h> #include<errno.h> #include<memory.h> #include<fcntl.h> int main() { char *command="date"; char *type="r"; FILE *fp; char buf[100]; fp=popen(command,type); if(fp==NULL) { printf("popen() error!\n"); exit(0); } while((fgets(buf,100,fp))!=NULL) printf("%s\n",buf); pclose(fp); exit(0); }
5输出
Thu Jun 23 01:49:13 PDT 2011
相关文章推荐
- Linux进程通信:命名管道FIFO小结
- Linux进程间的通信-基于有序文件(匿名管道)
- linux进程间的通信之管道通信
- Linux进程通信:管道
- C/C++:linux进程通信简单例子(管道)
- linux基础编程:进程通信之管道
- Linux----进程间通信-管道与两个命名管道实现进程双向通信
- Linux c==进程通信--有名管道(4)
- linux 进程通信 管道
- Linux 进程通信之管道
- linux下c编程进程通信-管道与信号
- Linux进程间的通信——有名管道fifo与守护进程deamon
- 【study】linux 进程通信之管道
- 【网络编程基础】Linux下进程通信方式(共享内存,管道,消息队列,Socket)
- linux c之通过管道实现兄弟间进程通信:
- LINUX编程——进程间管道通信
- linux进程通信--管道
- linux的IPC进程通信方式-匿名管道(一)
- Linux 进程通信(有名管道)
- 【Linux进程通信】管道,FIFO