Android init shell和子进程

时间:2013-03-23 16:27:51

标签: android shell init

#!/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

您好。 如果我将此代码放入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"

sleep 10

kill -9 $lPid

exit 0

如果我将此代码放入init.d中,脚本将在10秒后释放,因此脚本会在子进程下面继续运行。因此,如果脚本在下面继续,为什么它不会到达退出命令(并继续启动),直到子进程被杀死为止?

还有什么办法可以重写这个,以便它可以做我想做的事情,而无需添加额外的文件来执行?

1 个答案:

答案 0 :(得分:0)

尝试添加:

# wait for android os
until [ `pidof com.android.systemui` != "" ]; do
  sleep 1
done;
sleep 35;

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