父进程写子进程读
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/stat.h>
#include<sys/types.h>
int main()
{
int fd[2];
char buffer[80];
int ret=pipe(fd);
if(-1==ret){
perror("pipe the fail");
exit(1);
}
pid_t pid=fork();
if(-1==pid){
perror("fork the fail");
exit(2);
}
if(pid==0){
close(fd[1]);//关闭子进程的写
memset(buffer,0,sizeof(buffer));
read(fd[0],buffer,sizeof(buffer));
printf("children read msg is %s\n",buffer);
}
else{
close(fd[0]);//关闭父进程的读,只负责写
memset(buffer,0,80);
write(fd[1],buffer,80);
printf("父进程写入的数据是\n");
printf("send msg :%s\n",buffer);
}
return 0;
}
子进程写父进程读
#include<unistd.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int ret;
int fd[2];
char buff[80];
ret=pipe(fd);
if(ret<0){
perror("create pipe is fail");
}
pid_t pid;
pid=fork();
if(pid==-1){
perror("create jincheng fail");
}
else if(pid==0){
close(fd[0]);
printf("children is sending msg\n");
printf("请输入子进程发送的数据\n");
memset(buff,0,80);
fgets(buff,80,stdin);
write(fd[1],buff,sizeof(buff));
}
else{
close(fd[1]);
printf("parent recv msg is \n");
memset(buff,0,80);
read(fd[0],buff,sizeof(buff));
printf("recv msg is %s",buff);
}
}