在Android 开发中遇到一些signal 的情况,简要总结如下:
1)Zygote 监控 子进程的退出情况
jellybean/dalvik/vm/native/dalvik_system_Zygote.cpp#151
151 sa.sa_handler = sigchldHandler;
153 err = sigaction (SIGCHLD, &sa, NULL);
当进程结束的时候,log 中有类似下面的消息,这就是 Zygote打印出来,它会报告子进程被什么 signal 终结的
D Zygote : Process 749 terminated by signal (11)
2)DVM 生成单独的信号处理线程,用来对三个信号做特殊处理:
每个进程包含多个线程,当进程受到 signal 的时候,可能被其中任何一个线程处理
一个应用运行在虚拟机上dvm上一个应用也是一个dvm 进程,dvm 专门创建了一个信号处理线程来处理这3