歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux下的進程通信(管道通信)

#include 
#include 
#include 
#include 
#include 
#include 
#include 
int main(){
	int fd[2];//管道
	char inbuff[64],outbuff[64];
	pid_t pid1,pid2;
	pipe(fd);//創建管道  fd[1]用於寫數據,fd[0]用於讀數據
	pid1=fork();//創建子進程1
	if(pid1==0){
	close(fd[0]);//關閉管道用於讀數據的一側
	sprintf(inbuff,"Child 1 is sending!");
	write(fd[1],inbuff,32);//在子進程1中往管道寫32字節的的數據
	sleep(5);
	exit(0);
	}
	else if(pid1>0){
	waitpid(pid1,NULL,0);//等待子進程1執行完畢
	pid2=fork();//創建子進程2
	if(pid2==0){
	close(fd[0]);//關閉管道用於讀數據的一側
	sprintf(inbuff,"Child 2 is sending!");
	write(fd[1],inbuff,32);//在子進程2中往管道繼續寫32字節的的數據

	sleep(5);
	exit(0);
	}
	else if(pid2>0){
	close(fd[1]);//關閉用於寫數據的一側
	read(fd[0],outbuff,32);//父進程讀取管道中的32字節的數據
	printf("%s\n",outbuff);
	read(fd[0],outbuff,32);//父進程繼續讀取管道中的32字節的數據

	printf("%s\n",outbuff);
	}
	}
	return 0;
}
Copyright © Linux教程網 All Rights Reserved