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 发送命令时,它们都在 shell 中的同一行上,并且我认为从未真正执行过。您需要添加换行符以使 shell 执行。试试这个:

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 回答