问题:
我需要知道进程何时终止——只知道它的 PID。但是,我也有能力修改所有涉及的进程的来源,所以理论上我可以为所欲为。欢迎所有“高效”的想法。
策略一:
我研究过select()
, pselect()
, poll()
, ppoll()
, epoll()
. 我的理解是,为了获得文件描述符,我必须为要监视的每个进程连接一个套接字。然后我需要使用零超时值来实际轮询正在运行的进程,以查看套接字是否可用于读取,以便知道它是活动的还是死的。
策略二:
如果我在监控守护进程和其他进程之间创建多个管道,我可以写入管道,但从不在另一端读取并等待和处理SIGPIPE
信号吗?
结论:
在这一点上,我赞成策略 2,但我想向社区寻求与此方法相关的建议或陷阱。我对策略 1 的理解是否正确,假设我只想知道一个进程的终止而没有别的?另外,我对策略 2 的方法是否过于幼稚,它会消耗我不知道的系统资源吗?