【发布时间】:2014-07-31 02:54:38
【问题描述】:
我正在编写一个简单的 shell 程序,但不确定在 dup2() 和 execvp 之后文件描述符表会发生什么。所以我有一个父进程等待子进程结束(waitpid)但是当它循环回来等待下一个用户输入时,我在子进程中使用 dup2 修改的文件描述符表为什么不会保留在父进程中?是因为 execvp 将文件描述符表重置回原来的吗?
编辑:我想通了。 fork 函数实际上制作了程序映像的单独副本,包括文件描述符表,因此父进程的 fd 表不受影响。
【问题讨论】: