多进程管理,很麻烦的是,当子进程结束后,若父进程不读取子进程结束状态,子进程的进程号就不会被释放,形成僵死进程。


signal(SIGCHLD, SIG_IGN);            //Prevent to cause dead process

上面这句话的意思是当父进程接收到子进程结束的信号后,转交给Init(即老祖宗进程)。老祖宗进程会读取结束进程的状态,把它的进程号释放掉,防止产生僵死进程。

其实这是一个取巧的方法,这个方法可以避免父进程等待子进程结束而阻塞,或者不断检测子进程的状态。非常适合那些放鸽子式的进程,启动后不用管。当然这样父进程也就不能知道子进程什么时候结束。

当然也可以让父进程响应(SIGCHLD)这个信号,读取子进程的结束状态,这样适合放风筝式的启动子进程,当子进程结束后会通知父进程自己挂掉了,让父进程读取自己的结束状态,方便对子进程管理。

要想省事,