最近有个项目,一个deamon进程,一个worker进程。deamon 进程会捕获SIGCHLD信号如果worker进程down掉了,deamon会收到这个信号并且重新fork worker进程。
最近发现一个问题是 deamon进程fork了好几个worker进程。一度怀疑是不同的linux内涵对信号处理不同。后来我发现如果worker进程调用了system函数,system会fork一个子进程,这个子进程做完事情就退出了,导致deamon进程收到一次SIGCHLD信号。
最近有个项目,一个deamon进程,一个worker进程。deamon 进程会捕获SIGCHLD信号如果worker进程down掉了,deamon会收到这个信号并且重新fork worker进程。
最近发现一个问题是 deamon进程fork了好几个worker进程。一度怀疑是不同的linux内涵对信号处理不同。后来我发现如果worker进程调用了system函数,system会fork一个子进程,这个子进程做完事情就退出了,导致deamon进程收到一次SIGCHLD信号。