Android 在具有无效参数的根电话上执行进程

Android 在具有无效参数的根电话上执行进程,android,unix,process,terminal,busybox,Android,Unix,Process,Terminal,Busybox,假设: Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(SU); DataOutputStream processStream = new DataOutputStream(process.getOutputStream()); processStream.writeChars("cat /qwerty"); processStream.writeChars(EXIT); processStream.f

假设:

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()导致当前线程永远等待。我想问题在于无效的命令(我故意这么做)。但我如何处理这种情况呢


Busybox 1.17.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));