所以我想知道 - 是否可以将接受的TCP连接(在Windows或Unix上,如OS)从一个进程传递到另一个进程?这里的重点是通过连接 - 而不是代理应用程序的数据。
答案 0 :(得分:8)
在Unix中,TCP连接表示为套接字文件描述符。当您fork
进程时,子进程会继承文件描述符,包括TCP套接字。 (如果exec
标记为fcntl
,则可能会在FD_CLOEXEC
上关闭。)
还可以使用本地(Unix)域套接字在不相关的进程之间传输文件描述符;见this question。
我不确定Windows。
答案 1 :(得分:5)
在Windows上,使用WSADuplicateSocket
,将填好的WSAPROTOCOL_INFO
传递给其他进程,使用WSPSocket
重新创建套接字。
在类似unix的OS上,可以使用sendmsg()
系统调用。 libancillary为您摘录此内容。