#!/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 秒后释放,因此脚本确实在子进程下方继续。因此,如果脚本确实在下面继续,为什么它直到子进程被杀死后才到达退出命令(并继续启动)?
还有什么方法可以重写它,以便它做我想做的事情,而不添加要执行的额外文件?