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