#include #include #include #include int main() { int fd[2]; int f = pipe(fd); if (f == -1) { perror("pipe"); return 1; } int pid = fork(); if (pid == 0) { // 子进程: 读 // 关闭写通道 close(fd[1]); char buf[64] = {}; int len = read(fd[0], buf, 64); // 可能会阻塞,数据为空时会阻塞 printf("%d 子进程读取到: %s\n", getpid(), buf); // 关闭使用完之后,记得关闭 close(fd[0]); // 关闭读管道 _exit(0); } else if (pid > 0) { // 父进程,写 // 关闭读通道 close(fd[0]); printf("父进程(%d)等待3秒向子进程(%d)写数据\n", getpid(), pid); sleep(3); char buf[64] = "hello,flykhan"; write(fd[1], buf, strlen(buf)); // 关闭写通道 close(fd[1]); } return 0; }