Android从C ++终止子进程失败

时间:2019-01-24 12:03:29

标签: android c++ process kill-process multiprocess

我的Java代码使jni调用了c ++函数(function0);然后,c ++代码开始一个过程:

int main_pid,new_process_pid=-1;
void function0(){
    main_pid=getpid();
    new_process_pid=fork();
    if(main_pid!=getpid()){
        main_process();//some process with its own threads
    }
}

void kill_sub_process(){
    if(new_process_pid!=-1){
        kill(new_process_pid,SIGKILL);
    }
}

当我尝试通过从活动onStop()调用kill_sub_process函数来终止子进程时,logcat中会显示以下错误,并且应用程序崩溃:

  

致命信号4(SIGILL),代码1,TID 3844中的故障加法器0x91cb3110

安全地杀死子进程的正确方法是什么?

当我从子进程内部调用信号处理程序时,该进程被杀死而没有任何问题,但是当父进程发送信号时失败了;

1 个答案:

答案 0 :(得分:0)

通过反复试验,我发现可以通过调用android.os.Process.killProcess(pid)(其中pid是子进程ID)在Java代码中杀死在c ++代码中调用fork创建的子进程,但是不是通过父c ++代码;