这道题程序很简单,我就不贴出来了,主要是理解孤儿进程和僵死进程。
孤儿进程:父进程在子进程退出前退出了,只有儿子在了。但是这样init进程会接管这些孤儿,wait并释放了pid,所以孤儿进程没什么危害。
僵死进程:子进程退出了,父进程没wait ,收到退出信号,虽然子进程释放了内存一些资源,但子进程pid一直霸占着,只有父进程wait了,这样子进程pid就会释放,要不然形成了僵死进程。僵死进程一旦多了,这样pid资源就少了,所以危害很大。
我这道题遇到的问题是,在孤儿进程中不停的fork(),父进程sleep(1),子进程exit(0),这样就能保证形成僵死进程,创建了5个,你说现在有多少进程,不是32个,也不是5个,而是1个,因为fork时,我不停的推出了子进程,这样始终只存在父进程,所以最后我那个计数器始终只打印一次。