免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: mingjwan
打印 上一主题 下一主题

程序退出后,打开的端口仍在listen,怎么办。 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2007-04-25 10:58 |只看该作者
难道这是系统差异,或者严重点说,是系统BUG?

难道是在读取配置文件与FTP程序产生了冲突(楼主说有时配置文件并没有传送完全),造成内核某些地方出错(死锁?竞态?)?

论坛徽章:
0
62 [报告]
发表于 2007-04-25 10:59 |只看该作者
原帖由 flw 于 2007-4-25 10:44 发表
to wuqing:

根据他描述的情况,似乎是只能建立连接,并不能提供服务。
建立连接是由 OS kernel 提供的功能,和程序无关。
如果 OS kernel 的确没有关闭 socket 的话,即使应用程序退出了,也是可以建立连接 ...



kernel为什么没有关闭socket呢,根本原因还是没有找到

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
63 [报告]
发表于 2007-04-25 11:00 |只看该作者
原帖由 assiss 于 2007-4-25 10:58 发表
难道这是系统差异,或者严重点说,是系统BUG?

难道是在读取配置文件与FTP程序产生了冲突(楼主说有时配置文件并没有传送完全),造成内核某些地方出错(死锁?竞态?)?

我 56 楼的回复是个重点。
希望楼主尽快回复。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
64 [报告]
发表于 2007-04-25 11:02 |只看该作者
原帖由 deadlylight 于 2007-4-25 10:59 发表

kernel为什么没有关闭socket呢,根本原因还是没有找到

一个唯一合理的解释就是:OS 有 bug。
如果不愿意相信 OS 有 bug,那就需要找到这个进程。
如果希望证明 OS 有 bug,那么就需要找到这个进程不存在了的证据,以 OS 之矛,击 OS 之盾。
因此我在 56 楼的回复是个关键,
一切答案,即将揭晓。

论坛徽章:
0
65 [报告]
发表于 2007-04-25 11:04 |只看该作者
一个唯一的解释就是:OS 有 bug。

这个好办,换一个平台试试看就知道了

论坛徽章:
0
66 [报告]
发表于 2007-04-25 11:04 |只看该作者
可以试试
如果可以改服务的源码的话,就在listen成功后同时fork之前,加上abort退出,看8080是否还在

论坛徽章:
0
67 [报告]
发表于 2007-04-25 11:15 |只看该作者
tcpdump +gdb

论坛徽章:
0
68 [报告]
发表于 2007-04-25 11:15 |只看该作者
原帖由 mingjwan 于 2007-4-25 10:29 发表

程序是在启动的时候fork了一次


问题应该就在这里。打死我也不相信OS会有这样的bug,所以还有进程在listen是确定无疑的,只是你没有找到这个进程而已。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
69 [报告]
发表于 2007-04-28 10:13 |只看该作者
楼主跑哪儿去了?

论坛徽章:
0
70 [报告]
发表于 2007-04-29 14:24 |只看该作者
牛人一些,我不懂这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP