本文主要是介绍adb shell 执行后台程序后断开adb后台进程被结束的解决办法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
环境:Android 版本 Android8
通常让程序后台执行就是在命令 最后加上 &即可,但是在Android 8上实验发现,程序的确后台了,但是拔掉USB线再连接上发现进程已结束。不确定Android早期版本是否存在此问题。
参考网上一些Linux方法,如加nohup 仍然无效,还是会结束。看来Android adb shell 与 Linux shell 还是有一定区别。
后来在网上查到进程被结束的原因,说是使用exit 退出不会导致后台结束。所以就尝试 先使用exit 退出,再拔掉USB。发现的确有效。但是仍必须使用nohup指令。
实测 setsid 与 nohup 区别:setsid当当前用户退出,进程就结束了,nohup不会。
神奇的事情,一开始 使用nohup 一直不行的,后来又可以了,奇怪,经反复试验,这是概率性的,时而不会结束时而会。
扩展:导致进程结束的几个信号:1、2、3、9、15的SIGHUP、SIGINT、SIGQUIT 、SIGKILL、SIGTERM
SIGHUP是当终端断开时发出的,加nohup就是解决终端连接断开导致进程结束的。经验证未加nohup前使用kill -1 进程号,可以杀死进程,增加nohup后使用kill -1 进程号无法结束进程。说明拔掉USB进程仍会概率结束应该是其他信号导致
这篇关于adb shell 执行后台程序后断开adb后台进程被结束的解决办法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!