0

我有一个调用 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();
4

0 回答 0