自己fork的一堆进程的父进程都变成了变成了init(PPID=1)。正常的话应该第一个进程从Shell过来,然后fork的父进程都是这个进程的,杀掉这个进程和Shell都会把所有进程退出,但现在这么一堆5000多个进程只能写脚本kill了。
导致问题的 *** 作:
原来测试时写了一个多进程下面再利用多线程处理TCP的,启动10个进程都进行accept,一旦有了新连接就创建一个线程处理,然后继续accept。这个运行一直正常,不过今天晚上突发奇想拿这个简单修改了一下看最多能fork出多少进程了。开始在Linux测试数目一多就半死不活的了,后来拿FreeBSD上测试几次,记得5000是OK的,给一个再大的数实际上没创出那么多,而再往同一个用户在另一个终端登录的Shell中运行任何命令都提示无法创建进程,而用Ctrl+C中终这个服务器进程所有进程都退出,恢复正常。但 *** 作了几次之后忽然就出现了上面描述的现象,当时Ctrl+C显示已经退出之后开始以为好了,结果一查进程还有一堆,后来退出所有用户,结果还是解决不好问题。终端是p0,也就是我从Linux第一个登录上去的终端。
会员注册
会员登录
个人空间