23,120
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
int main(void)
{
int pipeFd1[2];
int pipeFd2[2];
if(-1 == pipe(pipeFd1))
{
perror("pipe fail");
exit(EXIT_FAILURE);
}
if(-1 == pipe(pipeFd2))
{
perror("pipe fail");
exit(EXIT_FAILURE);
}
pid_t pid = fork();
if(pid < 0)
{
perror("fork fail");
exit(EXIT_FAILURE);
}
else if(0 == pid)
{
int loops = 10;
close(pipeFd1[1]);
close(pipeFd2[0]);
while(loops--)
{
char buf[2];
printf("Hello ");
//fflush(stdout);
write(pipeFd2[1], "OK", 2);
read(pipeFd1[0], buf, 2);
if(strncmp(buf, "OK", 2))
{
fprintf(stderr,"pipe data error\n");
kill(getppid(), SIGKILL);
exit(EXIT_FAILURE);
}
}
}
else
{
int loops = 10;
close(pipeFd1[0]);
close(pipeFd2[1]);
while(loops--)
{
char buf[2];
read(pipeFd2[0], buf, 2);
if(strncmp(buf, "OK", 2))
{
fprintf(stderr,"pipe data error\n");
kill(pid, SIGKILL);
exit(EXIT_FAILURE);
}
printf("Goodbye\n");
//fflush(stdout);
write(pipeFd1[1], "OK", 2);
}
}
return 0;
}