我使用a创建子进程fork().如果子进程无法在30秒内完成执行,父进程如何杀死子进程?我想允许子进程执行长达30秒.如果超过30秒,父进程将终止它.你有任何想法吗?
Mik*_*ola 28
发送SIGTERM或SIGKILL:
http://en.wikipedia.org/wiki/SIGKILL
http://en.wikipedia.org/wiki/SIGTERM
SIGTERM是礼貌的,让它在进行之前清理进程,而SIGKILL用于什么时候它不会监听> :)
shell中的示例(手册页:http://unixhelp.ed.ac.uk/CGI/man-cgi?kill)
杀了-9 pid
在C中,你可以使用kill syscall做同样的事情:
kill(pid, SIGKILL);
Run Code Online (Sandbox Code Playgroud)
请参见以下手册页:http://linux.die.net/man/2/kill
小智 7
尝试这样的事情:
#include <signal.h>
pid_t child_pid = -1 ; //Global
void kill_child(int sig)
{
kill(child_pid,SIGKILL);
}
int main(int argc, char *argv[])
{
signal(SIGALRM,(void (*)(int))kill_child);
child_pid = fork();
if (child_pid > 0) {
/*PARENT*/
alarm(30);
/*
* Do parent's tasks here.
*/
wait(NULL);
}
else if (child_pid == 0){
/*CHILD*/
/*
* Do child's tasks here.
*/
}
}
Run Code Online (Sandbox Code Playgroud)