【发布时间】:2018-05-05 03:55:36
【问题描述】:
我有一个任务是用 C 为 shell 编写代码。其中一个 shell 命令是“quit kill”,我必须在关闭主进程之前向所有子进程发送 TERM 信号。 如果一个子进程在 5 秒内没有关闭,我必须发送一个 KILL 信号来杀死它。 现在我已经编写了代码,我想测试它,但我不知道怎么做,所以你们知道忽略 TERM 信号的过程吗? 这是我为终止一个子进程编写的代码:
kill(pid,SIGTERM);
t = time(NULL);
while(1){
int state = waitpid(pid,&status,WNOHANG);
if(state<0){
perror("Error ");
exit(0);
}
if(state == 0){
if((time(NULL)-t)>5){
printf("(5 sec passed) Sending SIGKILL… Done.\n");
kill(pid,SIGKILL);
break;
}
}
else{
printf("Done.\n");
break;
}
}
【问题讨论】: