#include #include #include #include #include #include int main(int argc, char const *argv[]) { int fd[2]; if (pipe(fd) == -1) { perror("pipe"); return 1; } pid_t pid = fork(); if (pid == 0) { close(fd[0]); // 关闭读 // 重定向标准输出到管道 dup2(fd[1], 1); execlp("expr", "expr", "4", "+", "5", NULL); close(fd[1]); _exit(0); } else if (pid > 0) // 父进程 { close(fd[1]); // 关闭写 char buf[10] = {}; int len = read(fd[0], buf, 10); buf[len - 1] = '\0'; printf("读取子进程发送的数据: %s\n", buf); close(fd[0]); } return 0; }