练习:使用无名管道进行父子进程之间的通信,父进程发送给子进程接收,当发送了quit就退出
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <string.h>
#include <sys/wait.h>
#include <stdlib.h>
//使用无名管道进行父子进程之间的通信,父进程发送给子进程接收,当发送了quit就退出
int main(void)
{
int pipefd[2];
pipe(pipefd);
//创建子进程
pid_t x=fork();
if(x > 0) //父进程写入
{
char buf[50];
while(1)
{
bzero(buf,sizeof(buf)); //清空数组
scanf("%s",buf);
write(pipefd[1],buf,sizeof(buf));
if(!strncmp(buf,"quit",4))
break;
}
wait(NULL);
}
if(x == 0) //子进程读取
{
char buf[50];
while(1)
{
bzero(buf,sizeof(buf)); //清空数组
printf("%s",buf);
read(pipefd[0],buf,sizeof(buf));
printf("读取: %s\n",buf);
if(!strncmp(buf,"quit",4))
break;
}
exit(0);
}
return 0;
}
结果如下
版权声明:本文为m0_57493222原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。