0

次のように仮定します。

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(SU);
DataOutputStream processStream = new DataOutputStream(process.getOutputStream());
processStream.writeChars("cat /qwerty");
processStream.writeChars(EXIT);
processStream.flush();

int status = process.waitFor();

Log.d("EXIT STATUS", String.valueOf(status));

process.waitFor();現在のスレッドを永久に待機させます。問題はその無効なコマンドにあると思います(意図的に作成しました)。しかし、このような状況にどう対処すればよいでしょうか。

ビジーボックス 1.17.1

4

1 に答える 1

1

writeChars を使用してコマンドを送信すると、それらはすべてシェル内の同じ行で実行され、実際には実行されないと思います。シェルを実行するには、改行を入れる必要があります。これを試して:

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(SU);
DataOutputStream processStream = new DataOutputStream(process.getOutputStream());
processStream.writeChars("cat /qwerty\n");
processStream.writeChars("exit \n");
processStream.flush();

int status = process.waitFor();

Log.d("EXIT STATUS", String.valueOf(status));
于 2012-08-29T14:59:15.200 に答える