我遇到过进程异常退出,线程未退出情况,请高手指点一下。

解决方案 »

  1.   


    我的使用的操作系统是win7。程序已经无响应了,提示结束,结束后发现有个tcp监听线程监听的端口还在监听(listen状态),但是对应的进程ID在任务管理器中找不到了,必须重启机器才能释放。
      

  2.   


    很疑惑,进程退出了,TCP监听线程还在(该端口还是Listen状态),但对应的进程ID在任务管理器中又找不到。真是奇怪
      

  3.   

    你的主线程异常结束了吧, 而子线程还没有结束,比如在主线程中调用了TerimateThread()/ExitThread()
      

  4.   


    如果过进程正常结束会给子进程置一个退出标志,然后主线程WaitForSingleObject子线程句柄,一直等到子线程自己退出。正常退出逻辑应该是没有问题的。
      

  5.   


    目前我机器上应该就那个进程监听那个端口。使用netstat查看那个端口对应的使用的进程ID,可是在任务管理器中查不到该进程ID。
      

  6.   


    win7的任务管理器有可能没有显示所有的进程。 你可以写个简单的进程遍历程序验证下所指定的进程是否真的不存在了。
      

  7.   


    目前我机器上应该就那个进程监听那个端口。使用netstat查看那个端口对应的使用的进程ID,可是在任务管理器中查不到该进程ID。
    这并不是线程在,而只是那个端口状态没有刷新过来
      

  8.   


    win7的任务管理器有可能没有显示所有的进程。 你可以写个简单的进程遍历程序验证下所指定的进程是否真的不存在了。当时没想到这点把机器重启了。
      

  9.   


    目前我机器上应该就那个进程监听那个端口。使用netstat查看那个端口对应的使用的进程ID,可是在任务管理器中查不到该进程ID。
    这并不是线程在,而只是那个端口状态没有刷新过来应该不是没有刷新过来,因为我在命令行里用telnet去连那个端口,发现是可以连上的。