Linux,C++,dup(socket) 是不是可以从另一个未分叉的进程中工作(如果不是如何启用它)?

Posted

技术标签:

【中文标题】Linux,C++,dup(socket) 是不是可以从另一个未分叉的进程中工作(如果不是如何启用它)?【英文标题】:Linux, C++, will dup(socket) work from another not forked process (if not how to enable it)?Linux,C++,dup(socket) 是否可以从另一个未分叉的进程中工作(如果不是如何启用它)? 【发布时间】:2011-03-18 08:59:01 【问题描述】:

所以我打开了一个套接字连接,就像here 中描述的那样,我想让其他进程使用该打开的连接。 dup() 会帮助我还是我该怎么办?

【问题讨论】:

你的意思是这样的:***.com/questions/5312773/…? dup 在这里根本没有用处。 是的...但是在不到 10 行的时间内执行黑魔法会更酷...=) 顺便说一句,Unix 的方式是在进程中创建一个套接字,然后使用fork()。该子进程继承所有套接字(除非它们是用O_CLOEXEC 打开的)。这种方式在 Unix 中非常容易。在 Windows 中更难......每个操作系统都有其优点和缺点。 【参考方案1】:

为了在现有进程之间传递套接字,您需要使用 sendmsg - 或 libancillary 来抽象整个事情。

【讨论】:

好的...所以没有什么比 WSADuplicateSocket 在 linux 上开箱即用... hm=(

以上是关于Linux,C++,dup(socket) 是不是可以从另一个未分叉的进程中工作(如果不是如何启用它)?的主要内容,如果未能解决你的问题,请参考以下文章

Linux dup dup2函数理解

Linux系统编程---dup和dup2详解

linux 中 C++ 中的 UDP Socket 编程

Linux之C++ socket通信编程

linux之dup和dup2函数解析

手把手写C++服务器(26):常用I/O操作创建文件描述符