pipecommunication.c

来自「给出一个应用双向管道进行不同进程间进行通信的实例。」· C语言 代码 · 共 69 行

C
69
字号
#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 + =
减小字号Ctrl + -
显示快捷键?