【问题标题】:transfer socket between processes in Linux在 Linux 中的进程之间传输套接字
【发布时间】:2015-11-16 16:20:38
【问题描述】:

如何在 Linux 下的进程之间转移套接字的所有权? Windows 有一个Socket.DuplicateAndClose 函数,但有没有办法在 Linux 上做到这一点?

如果有什么不同,我想将所有权从父进程转移到子进程,并且在我获得套接字时子进程还没有启动,所以我很感兴趣涉及forkexec 系列函数的解决方案。

【问题讨论】:

    标签: c++ linux sockets process


    【解决方案1】:

    子进程将继承文件描述符。因此,除了在 fork 孩子后关闭父级中的套接字之外,您无事可做。

    如果您 exec 子级中的另一个可执行文件,您可能希望通过使用特定参数来通知它文件描述符值。

    【讨论】:

      【解决方案2】:

      鉴于您希望在创建套接字后生成子节点,因此没有传输。子进程继承父描述符。因此,父级只需关闭套接字即可将所有权传递给子级。

      但是,要将新创建的套接字实际传递给现有进程, 您需要使用 辅助数据 接口来打包您的套接字,并使用sendmsgrecvmsg 进行数据传输。 cmsg 手册页包含有关如何创建消息以进行传输的示例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-07
        • 2022-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多