免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5231 | 回复: 9
打印 上一主题 下一主题

子进程之间如何传递socket的套接字? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-06 14:27 |只看该作者 |倒序浏览
本帖最后由 lonelybise 于 2012-03-06 14:42 编辑

大家好,我想请教一个问题:主进程创建了多个子进程,其中一个子进程是TCP服务器,接收到客户端连接后,能将socket传递给其它子进程吗?用什么方法?谢谢了

论坛徽章:
0
2 [报告]
发表于 2012-03-06 16:27 |只看该作者
很多种方法的,如果这个消息发送不是很频繁的话,可以考虑信号,这个方便挺方便的

论坛徽章:
0
3 [报告]
发表于 2012-03-06 16:46 |只看该作者
这样传过去的,只能是一个整形数,不是真正的socket FD啊!

论坛徽章:
0
4 [报告]
发表于 2012-03-06 16:57 |只看该作者
要传句柄过去的话,那就不好办了..... 而且道理上来讲, 好象也说不通吧.

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
5 [报告]
发表于 2012-03-06 16:59 |只看该作者
这个设计不常见啊
为什么不是主进程accept,传给子进程fd呢?

论坛徽章:
0
6 [报告]
发表于 2012-03-10 23:21 |只看该作者
本帖最后由 ninety_zhang 于 2012-03-10 23:23 编辑

子进程间另创建新的socket,转发数据。
进程间不能共享文件描述符,socket fd 传过去的话应该没有用吧。

论坛徽章:
0
7 [报告]
发表于 2013-08-16 13:37 |只看该作者
是没有用,但是可以传套接字。我正在找办法。应该可以成功的。、

论坛徽章:
0
8 [报告]
发表于 2013-08-21 00:37 |只看该作者
共享内存可以。

论坛徽章:
0
9 [报告]
发表于 2013-08-21 10:07 |只看该作者
5楼 说的对啊, 出名的 多进程都事这么处理的。

论坛徽章:
7
天蝎座
日期:2013-09-28 10:45:42双子座
日期:2013-10-16 16:27:09射手座
日期:2013-10-23 10:21:32处女座
日期:2014-09-17 16:44:332015年亚洲杯之巴林
日期:2015-04-09 17:28:01冥斗士
日期:2015-11-26 16:19:0015-16赛季CBA联赛之山东
日期:2018-03-02 23:59:31
10 [报告]
发表于 2013-08-21 15:04 |只看该作者
这个问题问得好啊,平时都是搞线程,直接传的,楼主让我在温习了一下。

sendmsg可以通过域套接字传递fd,有sendmsg传送的fd会经过内核做特殊处理,以将打开的fd从server传递到其他进程。

接收进程会将接收到的fd指向内核的文件表与发送进程发送的描述字相同的项。(接收前后的fd可能会不一样,毕竟每个进程的可用fd数字范围都会随着打开的fd而递增)。

详细的lz参看unp第一卷第二版14.7描述字传递吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP