了解进程如何在shell中工作

时间:2017-04-21 22:08:28

标签: c shell

假设我有一个用C编写的程序运行多个进程,在父进程中我使用dup()将stdin和stdout的文件描述符更改为其他FD。

我的问题是:对当前正在运行的所有进程,或仅对进行更改的进程可见更改?

1 个答案:

答案 0 :(得分:0)

如果您在父流程中重定向stdin\stdout,则不会影响在重定向之前创建的子流程,它只会影响之后创建的 / strong>重定向。
但是,当涉及线程时,如果一个线程关闭管道,它将在所有线程(属于同一进程)中关闭,如果其中一个重定向stdout,它将影响所有线程(属于同样的过程)。

Process A
.
.
Create Process B in process A
.
.
Create Process C in process A
.
.
Redirect stdout\stdin in process A
.
.
.
Create Process D in process A

B和C不受进程A重定向其stdout\stdin的影响。 另一方面,进程D将共享您使用父级重定向的相同stdout\stdin