6

所以我想知道 - 是否可以将接受的 TCP 连接(在 Windows 或 Unix 等操作系统上)从一个进程传递到另一个进程?这里的重点是传递连接 - 而不是以代理应用程序的方式传递数据。

4

2 回答 2

8

在 Unix 中,TCP 连接表示为套接字文件描述符。当你fork是一个进程时,文件描述符由子进程继承,包括 TCP 套接字。exec(尽管如果给定FD_CLOEXEC带有 的标志,它们可能会被关闭fcntl。)

也可以使用本地(Unix)域套接字在不相关的进程之间传输文件描述符;看到这个问题

我不确定Windows。

于 2011-03-15T13:58:32.447 回答
5

在 Windows 上,使用WSADuplicateSocket,将填写的内容传递WSAPROTOCOL_INFO给其他进程,用于WSPSocket重新创建套接字。

在类 unix 操作系统上,这可以使用sendmsg()系统调用来实现。libancillary为您抽象了这个。

于 2011-03-15T14:09:05.733 回答