目标是允许子分支执行1秒,如果超过1秒,程序应该终止(当然,如果执行时间少于1秒,它会立即执行),我当前执行的parent分支如下所示:
int ret;
if (waitpid(pid, &ret, WNOHANG) == 0) {
sleep(1);
if (waitpid(pid, &ret, WNOHANG) == 0) {
kill(pid, SIGKILL);
}
}
if(WIFEXITED(ret) && WEXITSTATUS(ret) == 1){
printf("*** Command not found: %s\n", args[0]);
}else{
//print error message
}
但是,waitpid()
与WNOHANG
返回0(无论命令是什么)。并且程序最终总是等待1秒。是否有命令可以替换这个waitpid()
?如果没有,我该怎么做才能实现我想要实现的目标?
1条答案
按热度按时间vlurs2pr1#
使用SIGALRM怎么样?
编制: