我应该使用pipe和dup2关闭什么文件描述符

时间:2017-05-19 14:13:44

标签: c pipe dup2

没有错误处理的示例代码

int pipes[2];

pipe(pipes);
int pid = fork();

if (pid == CHILD)
{
   close(pipes[0]); //close useless read fd
   dup2(STDOUT_FILENO, pipes[1]); //replace default output by writer piped fd
   execve(...);
   close(pipes[1]); // ??????????
}
else //parent
{
  close(pipes[1]); //close useless write fd
  dup2(STDIN_FILENO, pipes[0]); //replace default input by reader piped fd
  read(pipes[0]..);
  close(pipes[0]);
}

在孩子中,我们知道默认输出/输入在程序结束时自动关闭(STDIN_FILENO / STDOUT_FILENO)。 如果我使用dup2()更改默认输入/输出,我的管道[1]会自动关闭吗?或者我自己做,然后如何做?我认为execve会阻止我的计划成功。

0 个答案:

没有答案