2

initその過程でカスタムプログラムを開始したい。起動したAndroidストックROMから正常に動作するこのプログラムを静的にコンパイルしました。

android init.rcdocsから、execコマンドが必要なものであることがわかりました。
ところで、私が見ることができるのdmesgは、私のプログラムがコードで終了することだけです-1(私はそれを返すことはできません)。

init.rcスニペット:

on post-fs-data
write /dev/kmsg "launching test"
exec /data/test

私が見るのdmesgはこれだけです:

<4>[    6.336816] launching test
<6>[    6.336902] init: command 'write' r=0
<6>[    6.337115] init: command 'exec' r=-1

実行可能なソースコードは次のとおりです:http://pastebin.com/Hym1APWx


アップデート

私はこのプログラムを静的にコンパイルして実行しようとしました:

int main(){return 0; }

しかし、結果は常にcommand 'exec' r=-1です。ユーザーuselen/dataが正しいかもしれませんし、起動初期段階から実行可能ファイルを実行できないかもしれません。

4

2 に答える 2

8

クリスチャンが言ったように、execは実装されていないようです。init.rcで文書化されている多くの機能が実装されていないと思い始めています。ただし、プログラムを起動させる方法は次のとおりです。

これを「exec」コマンドとして実行する代わりに、これをサービスとして設定します。

init.rc、またはそれに含まれる別のファイル:

service my_service /data/test
    class main
    oneshot 

クラスmainにあり、無効になっていない場合は、/dataがマウントされた後に実行する必要があります。

于 2013-03-20T22:02:48.073 に答える
2

今日も同じ問題がありました。私の場合、解決策は単純でした。exec関数はまだ実装されておらず、。だけが含まれていましたreturn -1。を見てbuiltin.c検索する必要がありますdo_exec()。このコードは、ステートメントinit.rcが含まれている場合に実行されます。exec

于 2013-03-20T16:06:21.063 に答える