Fw: [问题] file descriptor 档案描述符的问题

楼主: gowrite (gowrite)   2021-04-21 15:51:40
※ [本文转录自 Linux 看板 #1WVzbyt9 ]
作者: gowrite (gowrite) 看板: Linux
标题: [问题] file descriptor 档案描述符的问题
时间: Wed Apr 21 15:51:22 2021
大家好,想询问一下,一个观念问题,
看到书上说,program 执行的时候,
shell 会帮忙开启 3 个档案描述符,分别是
stdio (0)
stdout (1)
stderr (2)
这个我了解,
我的问题在于,
请问这 3 个 fd 是 global 的吗?
意思就是 process A / process B / process C,
这 3 个 processes 在运行的时候,
所拿到 stdin, stdout, stderr 是同样的 fd 吗?
还是是分别在各自的 name space 里面?
意思就是,
process A 的 stdin ,与 process B 的 stdin 不同?
有什么方法可以验证吗?
谢谢
还请各位前辈解惑了,
谢谢
作者: leolarrel (真.粽子无双)   2021-04-21 16:15:00
一般状况下,fork出来的子行程会"继承"父行程的资源,包括标准输出,标准输入,标准错误这三个所以,他们不是global的,只是在生出子行程的时候子行程会继承,当然子行程可以透过一些手段让自己的标准输出输入指向别的目标物
作者: ucrxzero (RX-0)   2021-04-21 18:56:00
验证很简单 close(子行程的fd) 再让父行程 access 该fdfclose

Links booklink

Contact Us: admin [ a t ] ucptt.com