我只是想了解的管道,和我工作的一个例子:何时以及为什么我必须关闭管道?
#define _XOPEN_SOURCE 700
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
pid_t p;
int status;
int pipefd[2];
pipe(pipefd);
p = fork();
if(p == 0)
{
dup2(pipefd[1], 1);
close(pipefd[0]);
close(pipefd[1]);
execlp(argv[1], argv[1], NULL);
perror(argv[1]);
exit(1);
}
dup2(pipefd[0], 0);
close(pipefd[0]);
close(pipefd[1]);
execvp(argv[2], argv+2);
perror(argv[2]);
return 1;
}
我不明白为什么这个代码在使用它之前关闭pipefd。
为什么它在这里被关闭?