我的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
安全地杀死子进程的正确方法是什么?
当我从子进程内部调用信号处理程序时,该进程被杀死而没有任何问题,但是当父进程发送信号时失败了;
答案 0 :(得分:0)
通过反复试验,我发现可以通过调用android.os.Process.killProcess(pid)(其中pid是子进程ID)在Java代码中杀死在c ++代码中调用fork创建的子进程,但是不是通过父c ++代码;