README
这是无名管道的demo,适用于兄弟进程或者父子进程之间半双工通信
https://blog.csdn.net/ZHNEYU/article/details/126044287
pipe.c
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <wait.h>
#include <sys/types.h>
#define MSG_STR "Hello,my child!How are you?"
int main(int argc,char **argv)
{
int pipe_fd[2];
int pid;
int w_status=-1;
int res = -1;
char buf[64];
pipe(pipe_fd);//创建管道
if((pid=fork())<0){
printf("fork failure:%s\n",strerror(errno));
return -1;
}else if(0==pid){//子进程
close(pipe_fd[1]);//关闭写
memset(buf,0x00,sizeof(buf));
res = read(pipe_fd[0],buf,sizeof(buf));//等待读
if(res<0){
printf("read failure:%s\n",strerror(errno));
return -1;
}
printf("Child read data from parent:%s\n",buf);
sleep(3);
}else{//父进程
close(pipe_fd[0]);
write(pipe_fd[1],MSG_STR,strlen(MSG_STR));
wait(&w_status);
}
return 0;
}