无名管道pipe使用方法
2017-06-12 20:10
309 查看
有名管道pipe函数:int pipe(int filedes[2]);
下面程序通过创建进程,父进程写入数据,子进程读取数据,从管道中读取数据。
下面程序通过创建进程,父进程写入数据,子进程读取数据,从管道中读取数据。
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <string.h> int main() { int fd[2] = {0}; int ret = pipe(fd); if (-1 == ret) { perror("pipe"); exit(1); } pid_t pid = fork(); if (-1 == pid) { perror("fork"); exit(2); } if (0 == pid) { //read char buffer[32] = {0}; while (1) { close(fd[1]);//子进程读数据,关闭写入端 if (-1 == read(fd[0], buffer, 32)) { perror("read"); exit(3); } if (strcmp("exit", buffer) == 0) { close(fd[0]); exit(0); } } } else { //write char buffer[32] = {0}; while (1) { close(fd[0]);//父进程写数据,关闭读取端 scanf("%s", &buffer); if (-1 == write(fd[1], buffer, strlen(buffer))) { perror("write"); exit(4); } if (strcmp("exit", buffer) == 0) { close(fd[1]); exit(0); } printf("recv : %s\n", buffer); memset(buffer, 0, 32); } } return 0; }
相关文章推荐
- 无名管道(pipe)使用实例
- 无名管道pipe的使用
- Angular2的管道Pipe的使用方法
- Linux操作系统中的管道(pipe)使用方法
- 使用无名管道pipe实现进程间通信
- 无名管道pipe简单使用
- 无名管道pipe的使用
- 无名管道pipe的使用
- linux 无名管道pipe和有名管道FIFO
- wall的使用方法(配合管道)
- linux shell 管道命令(pipe)使用及与shell重定向区别
- 在.NET程序中使用PIPE(管道技术)
- 传统的进程间通信方式 1.无名管道(pipe) 2.有名管道(fifo) 3.信号(signal)
- sybase数据管道使用方法
- 1、进程间通信-PIPE(无名管道)
- Linux管道pipe使用实例
- 同一个进程使用pipe(管道)的例子
- linux shell 管道命令(pipe)使用及与shell重定向区别
- 使用pipe()与fork()函数通过管道实现父子进程之间的通信
- 执行一个命令,将其输出截获的代码-使用无名管道