【发布时间】:2012-03-28 16:13:33
【问题描述】:
我有两个 prgram,比如说 prog1 和 prog2。我正在用 prog1 打开一个文件并进行一些操作 在上面。现在不关闭 prog1 中的文件,我使用 unix 将其文件描述符发送到 prog2 然后在其中执行一些操作的套接字。
虽然我得到了我在 prog1 中传递的相同描述符,但是在 prog2 中收到的 fd 上执行了 fstat() 抛出一个错误,说错误的文件描述符。我已经用 corerct 权限在 prog1 中打开了文件 那是所有人都可以读写的,但我仍然收到错误。
为什么会这样。如果我传递文件描述符的方式是错误的,那么请提出正确的建议 一。
【问题讨论】:
-
我认为文件描述符属于进程。杀死进程后,文件描述符就消失了。我错了吗?
-
也许你可以让进程 1 等待进程 2 完成它的工作。然后,他们可以一起死。
-
你可以做你想做的事,它相当便携,但没有被广泛记录。不过,我现在没有关于如何做的参考资料。无论如何,到目前为止的答案都是错误的......
-
我认为将 prog2 作为子进程运行可能是一个更好的解决方案,而不是尝试共享文件描述符。
-
通过 unix 套接字传递文件描述符是一种非常好的技术,而且非常复杂,很容易搞砸。您确实有可能在传递描述符的方式上犯了错误,但很难说,因为您没有向我们展示您是如何做到的。