Linux通信之管道

来源:互联网 发布:mac什么浏览器最好用 编辑:程序博客网 时间:2024/06/11 06:32

管道通信之普通管道通信,只能在父子进程之间,单向,思想是,1.定义管道标识符,2.创建管道,3.创建进程,开始通信

具体的代码如下:

#include <unistd.h>#include <sys/types.h>#include <errno.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include<sys/wait.h> int main(){int pipe_fd[2];pid_t pid;char buf_r[100];char* p_wbuf;int r_num;memset(buf_r,0,sizeof(buf_r));if(pipe(pipe_fd)<0){printf("pipe create errorn");return -1;}if((pid=fork())==0){printf("n");close(pipe_fd[1]);  /*关闭写管道描述符*/sleep(2);if((r_num=read(pipe_fd[0],buf_r,100))>0){printf("%d numbers read from the pipe is %sn",r_num,buf_r);}close(pipe_fd[0]);exit(0);} else if(pid>0){close(pipe_fd[0]);if(write(pipe_fd[1],"hello",5)!=-1)printf("parent write1 success!n");if(write(pipe_fd[1],"pipe",5)!=-1)printf("parent write2 success!n");close(pipe_fd[1]);sleep(3);waitpid(pid,NULL,0);exit(0);}}