思维导图:
实现多个进程之间的收发信息操作
create.c:
#include <head.h>
int main(int argc, const char *argv[])
{if(mkfifo("a_send_b",0664)!=0){perror("");return -1;}if(mkfifo("b_send_a",0664)!=0){perror("");return -1;}printf("文件创建成功\n");getchar();system("rm a_send_b b_send_a");return 0;
}
a.c:
#include <head.h>
int main(int argc, const char *argv[])
{pid_t pid;pid=fork();if(pid>0){//父进程,发送数据char wbuf[20];int fd_send=-1;if((fd_send=open("./a_send_b",O_WRONLY))==-1){perror("");return -1;}while(1){bzero(wbuf,sizeof(wbuf));printf("请输入:");fflush(stdout);read(0,wbuf,sizeof(wbuf));wbuf[strlen(wbuf)-1]='\0';write(fd_send,wbuf,sizeof(wbuf));if(strcmp(wbuf,"quit")==0){break;}}}else if(pid==0){//子进程,接受数据char rbuf[20];int fd_rec=-1;if((fd_rec=open("./b_send_a",O_RDONLY))==-1){perror("");return -1;}while(1){bzero(rbuf,sizeof(rbuf));read(fd_rec,rbuf,sizeof(rbuf));if(strcmp(rbuf,"quit")==0){break;}printf("接收到的数据:%s\n",rbuf);}exit(EXIT_SUCCESS);}wait(NULL);return 0;
}
b.c:
#include <head.h>
int main(int argc, const char *argv[])
{pid_t pid;pid=fork();if(pid>0){//父进程,发送数据char wbuf[20];int fd_send=-1;if((fd_send=open("./b_send_a",O_WRONLY))==-1){perror("");return -1;}while(1){bzero(wbuf,sizeof(wbuf));printf("请输入:");fflush(stdout);read(0,wbuf,sizeof(wbuf));wbuf[strlen(wbuf)-1]='\0';write(fd_send,wbuf,sizeof(wbuf));if(strcmp(wbuf,"quit")==0){break;}}}else if(pid==0){//子进程,接受数据char rbuf[20];int fd_rec=-1;if((fd_rec=open("./a_send_b",O_RDONLY))==-1){perror("");return -1;}while(1){bzero(rbuf,sizeof(rbuf));read(fd_rec,rbuf,sizeof(rbuf));if(strcmp(rbuf,"quit")==0){break;}printf("接收到的数据:%s\n",rbuf);}exit(EXIT_SUCCESS);}wait(NULL);return 0;
}