使用无名管道进行父子进程之间的通信,父进程发送给子进程接收,当发送了quit就退出

  • Post author:
  • Post category:其他




练习:使用无名管道进行父子进程之间的通信,父进程发送给子进程接收,当发送了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 版权协议,转载请附上原文出处链接和本声明。