C:fork()后关闭(2)?

Jos*_*eph 1 c fork

快速提问,希望有人可以验证.在fork之后,如果您close(2)在父级中调用,则子级中的stderr不受影响.但是,如果您close(2)在孩子中打电话,父母的stderr将被关闭.那似乎对吗?我在FreeBSD中测试了这个,但似乎是这样,但我不确定为什么.我希望他们俩既不会相互影响,也不会相互影响,但不是这样.

任何见解?

Die*_*lla 5

在fork之后,父级中的每个打开文件描述符都会被复制,因此fork 之后的任何关闭都不会影响父级或子级.

除非你没有正确地做到这一点(即不检查fork()系统调用的输出).