23,117
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
short ReadFromPipe(int *fd,char *buf);
short WriteToPipe(int *fd,char *buf);
int main()
{
printf("hello test\n");
int fd[2]={0,0};
char buff[100]={1,2,3,4,5,6,7,8};
pid_t pid;
int No=0;
No = pipe(fd);
printf("NO.=%d\n",No);
pid=fork();
switch (pid)
{
case -1:
printf("fork error\n");break;
case 0: //子进程起始为接收端
printf("son proccess\n");
ReadFromPipe(fd,buff);
printf("pipe=%d\n",*(buff+2));
sleep(3); //尝试转为发送端
*(buff+1)=97;
WriteToPipe(fd,buff);
break;
default: //父进程起始为发送端
printf("father\n");
*(buff+2)=99;
WriteToPipe(fd,buff);
sleep(5); //尝试转为接收端送端
ReadFromPipe(fd,buff);
printf("pipe2=%d\n",*(buff+1));
}
return 0;
}
short ReadFromPipe(int *fd,char *buf)
{
short re; //return value
close(*(fd+1));
re=read(*fd,buf,100); //fd+0 for reading
return re;
}
short WriteToPipe(int *fd,char *buf)
{
short re;
close(*fd); //fd+1 for writing
re=write(*(fd+1),buf,100);
return re;
}