Android 从 C++ 中终止子进程失败
Android killing sub process from c++ fails
我的 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);
}
}
当我尝试通过从 activity onStop() 调用 kill_sub_process 函数来终止子进程时,logcat 中出现以下错误并且应用程序崩溃:
Fatal signal 4 (SIGILL), code 1, fault addr 0x91cb3110 in tid 3844
安全终止子进程的正确方法是什么?
当我从子进程内部调用信号处理程序但当父进程发送信号时进程失败;
通过反复试验,我发现在 C++ 代码中调用 fork 创建的子进程可以在 java 代码中通过调用 android.os.Process.killProcess(pid)( 其中 pid 是子进程进程 id) 但不是父 c++ 代码;
我的 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);
}
}
当我尝试通过从 activity onStop() 调用 kill_sub_process 函数来终止子进程时,logcat 中出现以下错误并且应用程序崩溃:
Fatal signal 4 (SIGILL), code 1, fault addr 0x91cb3110 in tid 3844
安全终止子进程的正确方法是什么?
当我从子进程内部调用信号处理程序但当父进程发送信号时进程失败;
通过反复试验,我发现在 C++ 代码中调用 fork 创建的子进程可以在 java 代码中通过调用 android.os.Process.killProcess(pid)( 其中 pid 是子进程进程 id) 但不是父 c++ 代码;