ADB进程在启动后台进程时阻塞

3

我正在尝试通过ADB在Android手机上后台运行一个shell脚本。为了简化,让它睡眠100秒:

$ adb shell
$ echo "nohup sleep 100&" > /data/local/tmp/test.sh
$ sh /data/local/tmp/test.sh
(does not block and returns to the shell immediately as expected. However:)
$ exit
(blocks until the sleep process is done)

通过单个adb命令行执行相同操作也会阻塞:

$ adb shell sh /data/local/tmp/test.sh

脚本可以正常运行,但adb调用会阻塞到'sleep 100'执行完。如果我从adb中断掉,睡眠进程仍然在运行,因此nohup部分似乎工作正常。

我如何在生成子进程后使adb退出而不强制终止主机端的adb进程?

1个回答

7

adb shell 'nohup sleep 10 2>/dev/null 1>/dev/null &' 能够按预期工作 - 启动进程且不会阻塞。


2
@divyum,nohup仍然会阻塞,除非您重定向stdout和stderr。 - tgeng
看起来与仍然打开的fds有关。顺便说一下,adb shell 'nohup sleep 10 &>/dev/null &'是一个更短的版本。 - Hritik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接