实现AB进程对话。
A进程发送一句话后,B进程接收到打印。然后B进程发送一句话,A进程接收后打印
重复上述步骤。直到AB接收或者发送完quit后,结束AB进程
#include <stdio.h>
#include <errno.h>
#include "/home/ubuntu/head.h"
int main(int argc, const char *argv[])
{
umask(0);
//创建有名管道
if(mkfifo("./fifo2",0664)<0)
{
if(errno != 17)
{
perror("mkfifo");
return -1;
}
}
printf("mkfifo success\n");
int fd = open("./fifo",O_RDWR);
if(fd<0)
{
perror("open");
return -1;
}
//创建进程
pid_t cpid=fork();
if(cpid==0)
{
char buf[128] = "";
while(1)
{
//从终端获取数据
fgets(buf, sizeof(buf), stdin);
buf[strlen(buf)-1] = '\0';
//将数据写入到管道中
if(write(fd, buf, sizeof(buf))
{
perror("write");
return -1;
}
}
printf("A端写入成功\n");
}
else if(cpid>0)
{
ssize_t res;
char buf[128] = "";
while(res = read(fd,buf,sizeof(buf)
{
//读取管道中的数据
//打印到终端
write(1,buf,res);
bzero(buf,sizeof(buf));
}
printf("B端输出完毕");
}
else
{
perror("fork");
return -1;
}
close(fd);
return 0;
}