在C ++中使用fork
系统调用时,如果执行它应该执行的内容需要太多时间,那么杀死子进程的最简单方法是什么?
喜欢以某种方式进入无限循环。父进程应该如何设置子进程的超时?
答案 0 :(得分:5)
将WNOHANG
与waitpid
一起使用,并在其间休息。这样的事情应该这样做:
while (times < max_times) {
sleep(5); /* sleep 5 seconds */
rc = waitpid(-1, &status, WNOHANG);
if (rc < 0) {
perror("waitpid");
exit(1);
}
if (WIFEXITED(status) || WIFSIGNALED(status)) {
/* it's done */
break;
}
times++;
}
if (times == max_times) {
/* ... */
}
答案 1 :(得分:0)
我认为你需要waitpid
超时和超时kill
子进程(假设孩子挂起)。查看此页面以获取建议:
Waitpid equivalent with timeout?