如何等待子进程完成时间限制?

时间:2013-08-30 22:02:52

标签: c linux unix operating-system

我想等一个分叉的子进程来完成执行,虽然我不想无限期地等待,但最多只有给定的时间,然后杀死孩子如果仍在运行。

Linux上的

wait(2)说:

  

否则它们会阻塞,直到子项更改状态或信号处理程序中断调用(假设系统调用未使用sigaction(2)的SA_RESTART标志自动重新启动)。

有人可以告诉我一个例子,如何在给定时间后设置中断等待的信号,然后继续执行

1 个答案:

答案 0 :(得分:2)

您可以使用alarm(3)设置一个计时器,该计时器会在您的进程过期时向其发送SIGALRMkill(2)是从信号处理程序调用的安全函数之一(请参阅signal(7) man page),因此您可以直接从SIGALRM处理程序和阻塞{{{你在主线程上做的3}}或wait(2)将会返回。

如果您需要更高的分辨率,可以改用wait(3)