⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pipecommunication.c

📁 给出一个应用双向管道进行不同进程间进行通信的实例。
💻 C
字号:
#include <stdio.h>#include <unistd.h>int main(int argc,char *argv[]){	int f_des1[2];	int f_des2[2];	int pid;	char msg[BUFSIZ];	char p_msg[BUFSIZ];	if(argc!=2){		printf("Usage:%s message\n",argv[0]);		return 1;	}	if(pipe(f_des1)==-1){	perror("cannot creat the IPC pipe");	return 1;	}	if(pipe(f_des2)==-1){	perror("cannot create the IPC pipe");	return 1;	}	pid=fork();	if(pid==-1){		perror("cannot create the new process");		return 1;	}	else if(pid==0){	close(f_des1[1]);	close(f_des2[0]);	if(read(f_des1[0],msg,BUFSIZ)==-1){	perror("child process cannot read data from pipe");	return 1;	}	else{	printf("in child process,receive message:%s\n",msg);	}	if(write(f_des2[1],msg,strlen(msg))==-1){	perror("child process cannot write dat to pipe");	return 1;	}	else	printf("in child process,send message back:%s\n",argv[1]);	_exit(0);	}	else{	close(f_des1[0]);	close(f_des2[1]);	if(write(f_des1[1],argv[1],strlen(argv[1]))==-1)	{		perror("parent process cannot write data to pipe");		return 1;	}	else		printf("in parent process,send message %s\n",argv[1]);	if(read(f_des2[0],p_msg,BUFSIZ)==-1)	{		perror("parent process cannnot read the data from pipe");		return 1;	}else		printf("in parent process,receive message:%s",p_msg);	wait(NULL);	_exit(0);	}		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -