📄 pipecommunication.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 + -