【问题标题】:ADB process blocks when starting background process启动后台进程时 ADB 进程阻塞
【发布时间】:2015-11-18 09:36:35
【问题描述】:

我正在尝试通过 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 调用会阻塞,直到“睡眠 100”完成。如果我 CTRL-C 退出 adb,睡眠进程会继续运行,因此 nohup 部分似乎工作正常。

如何让 adb 在生成子进程后退出而不强行杀死主机端的 adb 进程?

【问题讨论】:

    标签: android shell adb


    【解决方案1】:

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

    【讨论】:

    • @divyum,除非您同时重定向 stdout 和 stderr,否则 nohup 仍会阻塞。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多