子进程与父进程之间利用管道(pipe)进行通信

问题

两个子进程分别将内容输入到管道中,父进程从中读出内容然后输出

代码

#include 
#include 
#include 
#include 
#include 
#include 

int main(void){
	pid_t p1,p2;
	char buf[1024];
	int fd[2],a1,a2;
	char* str1="Child process 1 is sending a message!\n";
	char* str2="Child process 2 is sending a message!\n";
	if (pipe(fd)==-1){
		printf("Create a pipe failed\n");
		return 0;
	}
	p1=fork();
	if(p1==0){
		close(fd[0]);
		write(fd[1],str1,strlen(str1));
		wait(NULL);
		close(fd[1]);
		return 0;
	}
	waitpid(p1,&a1,0);
	p2=fork();
	if(p2==0){
		close(fd[0]);
		write(fd[1],str2,strlen(str2));
		wait(NULL);
		close(fd[1]);
		return 0;
	}
	waitpid(p2,&a2,0);
	close(fd[1]);
	int len=read(fd[0],buf,sizeof(buf));
	write(STDOUT_FILENO,buf,len);
	close(fd[0]);
	return 0;
}

pipe问题学习自https://blog.csdn.net/qq_42914528/article/details/82023408

你可能感兴趣的:(操作系统,多进程,c语言,linux)