繁体   English   中英

Fork如何使用PID终止进程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM