我有一个调用 C 程序的 android 应用程序。C 程序在运行时通过 printf() 返回一些结果,应用程序应读取这些结果。问题是当我在 adb shell 中运行 C 程序时,它返回所有 printfs 并终止,但是当我在应用程序中调用 C 程序时,我没有收到所有 printf 并且程序没有终止,例如
./adb shell execution gives me In app execution gives me
Start Start
1 1
2 2
3
End
我检查ps
并 C 程序仍在运行这是我在 java 中执行命令的方式:
public class RunCommands extends Thread {
private String cmd;
public RunCommands(String cmd) {
this.cmd = cmd;
}
public void run() {
ArrayList<String> list = null;
try {
Process result = Runtime.getRuntime().exec("su");
DataOutputStream dos = new DataOutputStream(result.getOutputStream());
Scanner s = new Scanner(result.getInputStream());
dos.writeBytes(this.cmd + "\n");
dos.writeBytes("exit\n");
dos.flush();
String line;
ArrayList<String> list = new ArrayList<String>();
while (s.hasNextLine()) {
line = s.nextLine();
list.add(line);
System.out.println(line);
}
} catch (IOException ioe) {
}
}
和电话:
RunCommands rc = new RunCommands(getFileStreamPath(fileName).toString());
rc.start();