- 论坛徽章:
- 0
|
原帖由 mingjwan 于 2007-4-25 10:19 发表
感谢大家的帮助。针对大家的疑问,我再说明如下:
1. 错误是可以复现的:但是由于整个程序比较复杂,可能简化后就不会再出现了(但是没有做这个工作)。
首先介绍一下异常操作:通过ftp工具给ftp配置文件到程序相应的目录下,同时给程序发送消息,让程序读取配置文件(此时ftp可能没有完成传输工作)。这一个过程我称为异常操作,但是经过此操作后,程序已经正常,没有core,也没有退出。此时需要kill -9 pid杀死程序,然后就会发现8080端口仍在监听。
2. 操作系统是soliars 9,运行sun自己的440服务器。
3. nestat -an| grep "8080" 的结果是:
zxme@zxmexxx1 $ netstat -an | grep "8080"
192.200.51.199.8080 *.* 0 0 49152 0 LISTEN
其实这个问题就是在与大家都以为kill -9 pid就一定100%能够杀死一个进程
既然8080端口仍然在监听,那么毫无疑问的一定是有一个进程在绑定该端口,和该端口关联,至于这个进程是那个应该被杀死而没有被杀死或者是否是另外一个化身,但是从楼主的种种描述上可以肯定的是8080端口在提供服务
建议:使用日志,楼主可以在你的程序代码中简单地输出一条信息到日志文件中,包含时间戳,pid等
daemon程序在bind之后要调用listen,listen之后就要无线循环,等待客户端连接提供服务,你可以在你的循环里加详细的日志信息用来troubleshooting |
|