在新建管道和进程之后,在子进程调用exec函数之前:
::close (pid_fd[0]);
dup2(pid_fd[1], STDOUT_FILENO);
::close (pid_fd[1]);
将实现子进程的标准输出重导向到管道的写端
dup2实现的直接效果为:描述符STDOUT_FILENO指向了管道的写端。
实际过程:内核修改STDOUT_FILENO的文件表指针,将该指针指向了管道的写端所对应的文件表,然后再关闭pid_fd[1]描述符。
在新建管道和进程之后,在子进程调用exec函数之前:
::close (pid_fd[0]);
dup2(pid_fd[1], STDOUT_FILENO);
::close (pid_fd[1]);
将实现子进程的标准输出重导向到管道的写端
dup2实现的直接效果为:描述符STDOUT_FILENO指向了管道的写端。
实际过程:内核修改STDOUT_FILENO的文件表指针,将该指针指向了管道的写端所对应的文件表,然后再关闭pid_fd[1]描述符。