进程通信之管道

xiaoxiao2021-02-28  126

#include <unistd.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int pipe_fd[2]; pid_t pid; char buf_r[100]; char *p_wbuf; int r_num; memset(buf_r, 0, sizeof(buf_r)); // 创建管道 if (pipe(pipe_fd) < 0) { perror("pipe"); return -1; } // 创建子进程 if ((pid = fork()) == 0) // 子进程还是父进程?? { printf("111\n"); close(pipe_fd[1]);   // 关闭管道写端 //sleep(10); if ((r_num = read(pipe_fd[0], buf_r, 100)) > 0) { printf ("%d bytes read from the pipe is %s\n", r_num, buf_r); } close(pipe_fd[0]); exit(0); } else if (pid > 0) { close(pipe_fd[0]);   // 关闭管道读端 sleep(10); if (write (pipe_fd[1], "Hello", 5) != -1) { printf ("parent write1 Hello\n"); } sleep(3); if (write (pipe_fd[1], " Pipe", 5) != -1) { printf ("parent write2  Pipe\n"); } close(pipe_fd[1]); sleep(3); waitpid(pid, NULL, 0);  // 等待子进程结束 exit(0); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-30391.html

最新回复(0)