#!/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デバイスのファイルに入れて、シェルから手動で実行すると、サブプロセスを実行したまま、1秒に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秒後に解放されるため、スクリプトはサブプロセスの下で続行されます。では、スクリプトが以下で続行される場合、サブプロセスが強制終了されるまで、スクリプトが終了コマンドに到達しない(そして起動を続行する)のはなぜですか?
また、実行するファイルを追加せずに、これを書き直して、私がやりたいことを実行する方法はありますか?