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

发布于 2024-11-07 13:12:57 字数 206 浏览 1 评论 0原文

急问,希望有人能验证。分叉后,如果您在父级中调用 close(2),子级中的 stderr 不受影响。但是,如果您在子级中调用 close(2),则父级中的 stderr 将关闭。这看起来对吗?我在 FreeBSD 中测试了这一点,似乎是这样,但我不确定为什么。我希望它们要么不互相影响,要么互相影响,但不是这样。

有什么见解吗?

Quick question, hoping someone can verify. After a fork, if you call close(2) in the parent, stderr in the child is unaffected. However, if you call close(2) in the child, stderr in the parent is closed. Does that seem right? I tested this in FreeBSD and it seems to be the case, but I'm not sure why. I would expect that either they both don't affect each other or they do, but not this.

Any insight?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凉薄对峙 2024-11-14 13:12:57

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

除非您做得不正确(即没有检查 fork() 系统调用的输出)。

After a fork, every open file descriptor in the parent gets dup'ed, so any close after the fork won't affect either the parent or the child.

Unless, you're doing it not properly (i.e. not checking the output of the fork() system call).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文