sort
正在等待,但是什么?我尝试execlp("head", "head", "-n", "3", NULL);
了sort
,它工作正常。
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#include <assert.h>
int main()
{
int p[2], cat_pid, sort_pid;
if (pipe(p) < 0) { assert(0 && "pipe fail"); }
if ((cat_pid = fork()) == 0) { dup2(p[1], 1); execlp("cat", "cat", "text", NULL); assert(0 && "cat fail"); }
if ((sort_pid = fork()) == 0) { dup2(p[0], 0); execlp("sort", "sort", NULL); assert(0 && "sort fail"); }
waitpid(sort_pid, NULL, 0);
}
输入text
是:
hello
world
foo
bar
在
sort
等待 EOF 时,您需要关闭管道的写入端。一个在完成后关闭cat
,另一个在父进程中。关闭管道'在父级中写入结束,一切都应该正常。man 7 pipe