gpt4 book ai didi

android - 在后台运行应用程序时 adb 挂起

转载 作者:行者123 更新时间:2023-11-30 00:43:59 75 4
gpt4 key购买 nike

我有一个程序应该在后台运行。我正在尝试使用 adb 触发它并获得以下行为:

adb shell "app &"
adb shell ps | grep myapp

显示应用未运行。

adb shell
$app &
$exit

终端没有响应的结果。终止 adb 进程后,当我通过以下方式检查时,终端被释放:

adb shell ps | grep myapp

我看到应用程序正在后台运行。

有人可以解释这种行为吗?如何从命令行运行应用程序并通过 cli 让它在后台运行?

Android Debug Bridge version 1.0.32 
Revision 9e28ac08b3ed-android

最佳答案

您的应用程序是与 ADB 连接时生成的 shell 的子项。当您退出 shell 时,您的应用程序将被终止,因为 shell 已被终止。你应该从 shell 中分离你的应用程序:

使用 nohup :

adb shell "nohup app &"

使用 daemonize (在某些 Android 系统上可用):

adb shell daemonize app
adb shell toybox daemonize app

而且如果你有麻烦(像我一样)使用挂起 adb shell 命令的 nohup,并且如果 daemonize 不可用,你可以自己用 C 编程,如下所示:

#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <unistd.h>

int main(int argc, char ** argv)
{
int pid = fork();
if (pid > 0) {
printf("Father dies\n");
return 0;
}

/* redirect_fds(): redirect stdin, stdout, and stderr to /dev/NULL */
(void) close(0);
(void) close(1);
(void) close(2);
(void) dup(0);
(void) dup(0);

while (1)
{
printf("Child runs silently\n");
sleep(1);
/* Do long stuff in backgroudn here */
}
return 0;
}

关于android - 在后台运行应用程序时 adb 挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42093100/

75 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com