博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[网络通信]使用fork的TCP通信服务端重起bind问题
阅读量:7099 次
发布时间:2019-06-28

本文共 350 字,大约阅读时间需要 1 分钟。

hot3.png

现象:

socket服务器,对每个连接fork一个子进程进行处理,此时服务器重起,虽然设置了SO_REUSEADDR,但是仍然bind失败。

原因分析:

1、fork后,用于LISTEN的socket,也会被子进程继承,状态也是处于LISTEN状态。所以服务重起后bind失败。

2、可以在子进程中主动将LISTEN的socket关闭。(因为fork后并没有调用exec,所以设置的FD_CLOEXEC并不会起作用。)

3、例如,sshd服务就可以在服务的子进程工作时,重起sshd仍然会成功。 使有strace -f -p pid 跟踪了一下, 子进程中有close LISTEN socket的操作。

转载于:https://my.oschina.net/u/136074/blog/719565

你可能感兴趣的文章
人人需具备的基本信息素养视频课程【荷露叮咚】免费
查看>>
zabbix升级版本过程(7)
查看>>
linux驱动之ioctl
查看>>
我的友情链接
查看>>
jxl导出excel
查看>>
三大WEB服务器对比分析(apache,lighttpd,nginx)
查看>>
redhat nginx 安装
查看>>
WSE convert to ESE, or ESE to WSE.
查看>>
CentOs最小化安装之后安装桌面环境及中文支持
查看>>
加载定义界面
查看>>
SEO基础知识
查看>>
手机通讯录导入工具
查看>>
Java虚拟机精讲之内存分配与垃圾回收
查看>>
hadoop常见命令
查看>>
each用法(网络摘抄)
查看>>
菜鸟也可以自己封装万能ghost系统
查看>>
路由心生
查看>>
【python】 倒序输出字符串
查看>>
Spark 2.x kafka LocationStrategies 的几种方式
查看>>
EntboostChat 1.3发布,iOS开源手机IM,恩布IM
查看>>