我想等一个分叉的子进程来完成执行,虽然我不想无限期地等待,但最多只有给定的时间,然后杀死孩子如果仍在运行。
Linux上的wait(2)说:
否则它们会阻塞,直到子项更改状态或信号处理程序中断调用(假设系统调用未使用sigaction(2)的SA_RESTART标志自动重新启动)。
有人可以告诉我一个例子,如何在给定时间后设置中断等待的信号,然后继续执行?
答案 0 :(得分:2)
您可以使用alarm(3)
设置一个计时器,该计时器会在您的进程过期时向其发送SIGALRM
。 kill(2)
是从信号处理程序调用的安全函数之一(请参阅signal(7)
man page),因此您可以直接从SIGALRM
处理程序和阻塞{{{你在主线程上做的3}}或wait(2)
将会返回。
如果您需要更高的分辨率,可以改用wait(3)
。