假设我有一个用C编写的程序运行多个进程,在父进程中我使用dup()
将stdin和stdout的文件描述符更改为其他FD。
我的问题是:对当前正在运行的所有进程,或仅对进行更改的进程可见更改?
答案 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
。