c - 如何等待子进程在时间限制内完成?

标签 c linux unix operating-system

我想等待一个 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)设置一个计时器,在到期时向您的进程发送 SIGALRMkill(2)是从信号处理程序安全调用的函数之一(请参阅 signal(7) man page ),因此您可以直接从 SIGALRM 处理程序和阻塞 wait(2) 终止子进程。或wait(3)你在主线程上所做的事情将会返回。

如果需要更高分辨率,可以使用ualarm(3)相反。

关于c - 如何等待子进程在时间限制内完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18542089/

相关文章:

c - 当我替换正在运行的 PostgreSQL 服务器使用的 .so 文件时,它崩溃了

android - FFMPEG sws_scale 在 Android 上崩溃

regex - 在 OSX 和 GNU 中删除带有 "find"数字的文件名

我可以在 C 源代码中找到具有一定大小的结构吗?

linux - 无法连接 bash 变量

c++ - 未使用 "popen"和 "read"函数读取标准输出

linux - 空行下的第一列副本

linux - 获取SFTP错误的命令

c - ablkcipher_request_set_callback 有什么作用?

c - 让程序在 C 中再次运行