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