快速提问,希望有人可以验证。在fork之后,如果您在父级中调用close(2)
,则子级中的stderr不受影响。但是,如果您在子项中调用close(2)
,则父项中的stderr将关闭。那似乎对吗?我在FreeBSD中测试了这个,但似乎是这样,但我不确定为什么。我希望他们俩既不会相互影响,也不会相互影响,但不是这样。
有什么见解?
答案 0 :(得分:5)
在fork之后,父级中的每个打开文件描述符都会被复制,因此在之后的任何关闭都不会影响父级或子级。
除非你做得不好(即不检查fork()
系统调用的输出)。