[英]Fork How to Kill A process with PID
大家好我必须使用c ++运行二进制文件并将其杀死。
我的代码看起来像
static int PROCESS_PID=0;
void startService(bool startservice){
if(startservice==true){
pid_t PID = fork();
if(PID == 0) {
PROCESS_PID = getpid();
printf("the child's pid is: %d\n", PROCESS_PID);
system("./process");
}
}
else{
kill(PROCESS_PID, SIGUSR1); //kill process inside child process
}
}
但是当我杀死这个过程时,整个程序就会退出。 任何想法 ? 我的代码有什么问题吗?
谢谢....
当你调用system()
你正在开始第三个进程 - 一个你没有pid的进程。 请改用exec()
。
更糟糕的是,你的kill()
调用仅在startservice!=true
的情况下进行,并且在这种情况下PROCESS_PID==0
...所以你要杀死进程0(它会将信号发送到当前的所有进程)过程组)。
它不起作用的原因是因为你是双fork()
,因为system()
将执行fork()
/ exec()
以执行你想要运行的命令。
如果你想更好地控制子进程(包括杀死它),那么编写你自己的system()
版本,你自己执行fork()
和exec()
。
有很多例子说明如何在互联网上敲门。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.