我想等待一个 fork 的子进程完成执行,虽然我不想无限期地等待,但最多在给定的时间内,然后杀死 child (如果仍在运行)。 p>
wait(2)在 Linux 上说:
Otherwise they block until either a child changes state or a signal handler interrupts the call (assuming that system calls are not automatically restarted using the SA_RESTART flag of sigaction(2)).
有人可以给我举个例子,我应该如何设置一个信号来在给定时间后中断等待,然后继续执行?
最佳答案
您可以使用alarm(3)
设置一个计时器,在到期时向您的进程发送 SIGALRM
。 kill(2)
是从信号处理程序安全调用的函数之一(请参阅 signal(7)
man page ),因此您可以直接从 SIGALRM
处理程序和阻塞 wait(2)
终止子进程。或wait(3)
你在主线程上所做的事情将会返回。
如果需要更高分辨率,可以使用ualarm(3)
相反。
关于c - 如何等待子进程在时间限制内完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18542089/