编程论坛
注册
登录
编程论坛
→
Linux教室
如何解决通讯中产生的无效进程
vfdff
发布于 2008-11-15 12:21, 1527 次点击
使用附件中的一对程序,实现基于TCP/IP的CS模式通讯
不知道为什么启动服务后
每次运行一次客户的理解,服务器端就多出来一个无效的进程(可以在linux redhat 9的system monitor中查看或者使用ps 查看)
7 回复
#2
forever74
2008-11-16 11:36
个人看法:
大概是因为你的客户程序read结束以后输出信息,然后就exit了,没有执行到close
于是server端单方面close,这个是需要时间的,于是进程就在那里等着了
我想如果两头都执行了close了,那就很快真的close了,接下来server端的子进程没事了就可以真的exit了。
瞎想的,欢迎拍砖。
#3
vfdff
2008-11-16 19:34
回复 2# 的帖子
恩 ,你是说服务器要接收到信号,确定了此次通讯连接已经结束 他才会关闭??
#4
forever74
2008-11-16 20:57
一般是这样,否则就会发呆一段时间,然后才真的关闭
#5
vfdff
2008-11-23 11:03
回复 第4楼 forever74 的帖子
发呆一段时间,这段时间要多久呢 ?
为什么我一直不见得他自己关闭呢 ?
#6
zhddragon
2009-09-15 20:33
回复 楼主 vfdff
没看源代码,不过估计应该是每一次连接server端都fork了一个子进程,在通讯结束后,父进程没有调用wait系列的函数接收子进程的退出信息导致产生僵死的进程。
#7
2010-05-04 17:59
上楼的说得不错!!!
#8
xiaowenhuman
2010-06-29 23:58
kill掉
1