#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[1]); dup2(fd[0], 0); // 0 -> fd[0] ,标准输入设备改为管道 execlp("grep", "grep", "fish", NULL); close(fd[0]); _exit(0); } else if (pid > 0) // 父进程 { close(fd[0]); // 关闭读 // 将命令执行结果写入管道中 dup2(fd[1], 1); // 1 -> fd[1] ,标准输出设备改为管道 execlp("ps", "ps", "-A", NULL); close(fd[1]); // wait(pid); } return 0; }