我正在开发一个taskmaster,非常像supervisor:它从配置文件运行多个程序,然后我可以停止/重启/记录有关这些程序的信息。
我fork()
然后execve()
(丢弃程序的输出)。在父进程中,我听SIGCHLD信号。
问题是在OSX上,SIGCHLD不是在SIGCONT上发送的,而在Ubuntu上则发生。
那么,是否有一种可移植的方式在主进程中通知孩子已被发送SIGCONT?当孩子有SIGCONTinued时接收信号是完美的。
我可以每秒运行一个单独的线程和waitpid()
WUNTRACED,但我需要准确的信息(例如,我需要记录进程的运行时间)。
我可以在我的taskmaster中解决一些问题,使其以某种方式工作,但如果该程序在我的程序之外发送SIGCONT,我通常不会收到通知。
手册引用:
当子进程发送时,SIGCHLD信号被发送到进程 中断后终止,中断或恢复。