如何在进程间传递socket fd?

yym314 2007-01-18 01:27:21
在linux下,有三个进程A,B,C.
A是个服务器程序,负责侦听某个端口。当其accept一个新的socket以后,阻塞的从这个socket读取一个数据包,检查数据包的类型.如果是类型1,应该把这个socket交给进程B处理,如果是类型2应该是交给进程C处理。
我不想在每次接受到数据包以后再fork子进程(我认为这样效率比较低 :) ),所以我就事先把进程B,C建好了。
现在我的问题是,进程A怎么才能把它accept的socket交给B,C呢?好使B,C能通过这个socket和客户端通信?
...全文
681 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lurenfu 2007-01-18
  • 打赏
  • 举报
回复
楼主难道不会用google?其实这样的问题很容易就google出来了,何况steven的经典名作:UNIX网络编程里已经讲得很清楚了
lurenfu 2007-01-18
  • 打赏
  • 举报
回复
http://www.5anet.com/index.php?module=article&action=showarticle&id=35310
lurenfu 2007-01-18
  • 打赏
  • 举报
回复
不知道你要干什么?
用socketpair,然后一个用ioctl(I_SENDFD),另一个用ioctl(I_RECVFD)
yym314 2007-01-18
  • 打赏
  • 举报
回复
darkone(小牛)说的那些方法是可以轻易的把socket fd这个值在进程间传递.
但是A进程的fd到了B进程里是不能用的啊
playmud 2007-01-18
  • 打赏
  • 举报
回复
那你还不如建立两个socket方便呢
swen96 2007-01-18
  • 打赏
  • 举报
回复
这个问题我也很感兴趣
darkone 2007-01-18
  • 打赏
  • 举报
回复
应该多看看进程间通讯的书
darkone 2007-01-18
  • 打赏
  • 举报
回复
采用共享内存、消息队列、文件方式、SOCKET通讯、管道方式均可以实现

23,127

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧