4
在C++中使用fork
系统调用时,如果执行应执行的任务需要太多时间才能终止子进程,那么最简单的方法是什么?如果花费太多时间就会终止子进程
如果它以某种方式进入无限循环......父进程应该如何设置子进程的超时值?
在C++中使用fork
系统调用时,如果执行应执行的任务需要太多时间才能终止子进程,那么最简单的方法是什么?如果花费太多时间就会终止子进程
如果它以某种方式进入无限循环......父进程应该如何设置子进程的超时值?
使用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) {
/* ... */
}
我认为你需要waitpid
与超时和超时kill
子进程(假设孩子是洪)。检查此页的想法: Waitpid equivalent with timeout?
有更好的选择:修复无限循环。 – 2011-06-17 12:47:44