我正在尝试编写一些代码来分叉一个新进程,但如果花费的时间太长,则会在一段时间后杀死该新进程。这段代码在没有时间限制的情况下运行良好,并且执行execve
没有任何问题,但是当我将前 4 行代码放入并尝试调用cat
我的 execve 时,孩子只是被杀死了,假设是调用警报。
在这种signal
情况下,调用似乎根本没有做任何事情,我已经输入了许多痕迹killproc
并且没有被调用。我如何错误地设置此计时系统?
void killproc(int sig) {
printf("running?");
}
代码:(儿童)
if(MAX_TIME != -1){
signal(SIGALRM, killproc);
alarm(MAX_TIME);
}
// Process we are timing
int ret = execve(path, newargv, envp);