环境:Linux操作系统Ubuntu
#include#include #include #include int main(){ int fd[2]; pid_t p; char buf[100]; if((pipe(fd))==0){ //管道创建成功 p = fork(); //创建一个子进程 if(p==0){ //创建子进程成功 close(fd[1]); sleep(3); read(fd[0],buf,100); printf("child process read date successfully!n"); printf("data:%sn",buf); close(fd[0]); return 0; } else if(p>0){ close(fd[0]); write(fd[1],"hello world",11); printf("write in the pipe successfully!n"); close(fd[1]); printf("parent close write pipe successfully!n"); sleep(3); } } return 0; }
#include#include #include #include #include #include #include #include int main(){ char buf[100]; char* path = "fifo"; int fi = mkfifo(path,0666); //创建命名管道文件 int fifo_fd; int fifo_wr; if(fi<0){ printf("create fifo error!n"); return 0; } printf("create fifo successfully!n"); pid_t p; p = fork(); if(p==0){ fifo_fd = open(path,O_WRONLY); if(fifo_fd<0){ printf("write error!n"); return 0; } printf("write in fifo successfully!n"); write(fifo_fd,"hello world",11); sleep(3); close(fifo_fd); } else if(p>0){ fifo_fd = open(path,O_RDONLY); printf("buf before read fifo:%sn",buf); read(fifo_fd,buf,11); printf("buf:%sn",buf); close(fifo_fd); } else{ printf("create child process error!n"); return 0; } return 0; }
命名管道通信实验中,每次运行后可删除新建的fifo文件,以备下一次运行



