概述
Problem 69 孤儿进程组?
Ans:
一个进程组被认为是一个孤儿进程组时,则说明它的任何一个成员进程都没有一个处于相同会话中但在不同进程组的父进程(按句话说:该组中每个成员的父进程要么是该组的一个成员,要么不是该组所属会话的成员。)。位于孤儿进程组之外的进程不能监控該孤儿进程组中的任何已经处于停止状态的进程,同时也不能向这些处于停止状态的进程发送SIGCONT信号,使得这些处于停止状态的进程可以恢复运行。这可能会导致这些进程永远游荡在系统中,占据着系统资源无法释放。为了避免这种情况发生,当一个进程组中有处于停止状态的进程时,如果该进程组变成孤儿进程组,则会向所有的进程组成员进程发送一个SIGHUP,并紧接着发送一个SIGCONT信号以通知它们已经变成一个孤儿进程,确保它们重新启动。当然,那些孤儿进程组中不处于停止状态的进程也会收到上述信号,一个进程如果没有针对SIGHUP做特别处理,则默认会退出。
利用上述定义,我们可以尝试如下步骤,使Android重启(不是平台重启):
1. 写一个APP,里面执行如下语句:Runtime.getRuntime().exec(“logcat -v threadtime > /data/local/tmp/logcat.txt”),并运行该APP
2. 通过如下命令,向平台上任何一个其他的APP发送一个SIG 19,使其处于STOP状态
adb shell kill -19 other_apk_pid
3. 查看本APP的pid,使用如下命令杀死当前APP
adb shell kill -9 my_pid(此时logcat进程变成孤儿进程,孤儿进程组产生)
4. 查看logcat进程的pid,杀死logcat进程,会发现不一会儿,system_server退出,Android所有服务重新启动,并最终重新进入Launcher界面。
最后
以上就是完美飞鸟为你收集整理的Problem 69 孤儿进程组?的全部内容,希望文章能够帮你解决Problem 69 孤儿进程组?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复