Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android init shell和子进程_Android_Shell_Init - Fatal编程技术网

Android init shell和子进程

Android init shell和子进程,android,shell,init,Android,Shell,Init,嗨。 如果我将此代码放入Android设备上的一个文件中,并从shell中手动执行,则该文件将完全退出,同时保持子进程运行并每隔1秒打印一次logcat。但是,如果我将其放入init.d文件夹并重新启动手机,脚本将不会被释放,并且根据init.d实现的不同,手机将不会启动 #!/system/bin/sh ( lCount=0 while :; do sleep 1 lCount=$(($lCount + 1)) log -

嗨。 如果我将此代码放入Android设备上的一个文件中,并从shell中手动执行,则该文件将完全退出,同时保持子进程运行并每隔1秒打印一次logcat。但是,如果我将其放入init.d文件夹并重新启动手机,脚本将不会被释放,并且根据init.d实现的不同,手机将不会启动

#!/system/bin/sh

(
    lCount=0

    while :; do
        sleep 1

        lCount=$(($lCount + 1))

        log -p v -t test "Running test number $lCount"
    done
) & 

lPid=$!

log -p v -t test "Started at $lPid"

exit 0
如果我将此代码放入init.d中,脚本将在10秒后释放,因此脚本确实会在子进程下面继续。因此,如果脚本在下面继续,为什么在子进程被终止之前它不会到达exit命令(并继续引导)

还有什么方法可以重写它,使它执行我希望它执行的操作,而不添加要执行的其他文件?

尝试添加:

#!/system/bin/sh

(
    lCount=0

    while :; do
        sleep 1

        lCount=$(($lCount + 1))

        log -p v -t test "Running test number $lCount"
    done
) & 

lPid=$!

log -p v -t test "Started at $lPid"

sleep 10

kill -9 $lPid

exit 0

脚本将首先等待操作系统。

如果有任何帮助,我已将问题定位到logwrapper,它几乎总是用于执行运行部件,然后执行init.d文件夹。如果在没有logwrapper的情况下执行(仅运行部分),它可以正常工作。我需要一种在脚本中强制退出logwrapper的方法。启动子进程后,只需放置“killall logwrapper”。脚本和init.d都将继续,子进程将在后台运行,不会暂停任何操作。不,不会。一些init.d实现在执行所有脚本之前不会引导操作系统。因此,拖延这样的脚本会给一些人带来很多问题。然而,正如上面提到的,简单地终止logwrapper进程就可以解决这个问题。
# wait for android os
until [ `pidof com.android.systemui` != "" ]; do
  sleep 1
done;
sleep 35;