(十二) 进程间通信-管道

来源:互联网 发布:下载pc软件网站 编辑:程序博客网 时间:2024/05/22 03:06
  • 管道

从一个进程连接到另一个进程的一个数据流

FILE *popen(const char *command, const char *type);
int pclose(FILE *stream);

type必须是"r"或"w"

如果你想通过管道实现双向通信,最普通的方案就是使用两个管道

  • popen实现

popen调用运行另外一个程序的时候,它先启动shell,即系统中的sh命令,然后把command字符串作为一个参数传递给他

在UNIX系统里,一切参数扩展都是由shell完成的

每做一次popen调用,就要启动两个进程

  • int pipe(int filedes[2]);

FIFO("First in, First out")

  • 把管道做为标准输入和标准输出

int dup(int oldfd);
int dup2(int oldfd, int newfd);

dup调用的作用是打开一个新的文件描述符

dup的特点是用它新创建出来的文件描述符与作为他参数的那个现有文件描述符指向同一个文件(或管道)

  • 有名管道
int mknod(const char *pathname, mode_t mode, dev_t dev);
int mkfifo(const char *pathname, mode_t mode);

#include <stdlib.h> //EXIT_FAILUREint main(){    int res = mkfifo("/tmp/my_fifo", 0777);    if(res == 0)    {        exit(EXIT_FAILURE);    }    exit(EXIT_SUCCESS);        return 0;}

0 0
原创粉丝点击