在Linux中的进程之间传输套接字

时间:2015-11-16 16:20:39

标签: c++ linux sockets process

如何在Linux下的进程之间传输套接字的所有权? Windows有Socket.DuplicateAndClose功能,但有没有办法在Linux上执行此操作?

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

2 个答案:

答案 0 :(得分:3)

子进程将继承文件描述符。因此,除了在分叉孩子后关闭父母中的套接字之外,你无需做任何事情。

如果孩子中有exec个其他可执行文件,您可能希望使用特定参数通知文件描述符值。

答案 1 :(得分:2)

假设您希望在创建套接字后生成子进程,则不会进行传输。子进程继承父描述符。因此,父母只需关闭套接字即可将所有权传递给孩子。

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