我正在构建一个监视器应用程序,它在后台运行并使用strace命令记录当前正在运行的应用程序执行的系统调用。
String cmd="strace -p "+processID+" -o /mnt/sdcard/traceFile_"+processID+".txt";
Runtime.getRuntime().exec(cmd);
这里的processID是当前运行的进程的 PID,它是从其他一些实现的方法中获得的。它记录了它正确监控的第一个应用程序的系统调用以及所有已执行的系统调用信息。但是当一个新的应用程序启动时(第二个开始),processID被正确更新,但是文件traceFile_processID被写为一个空文件。我无法弄清楚它为什么会发生。是不是因为监控的第一个应用程序的 strace 执行仍然存在?如果是这样,我如何执行 ^C 来终止该会话并像在 adb shell 命令提示符中那样启动一个新会话?请帮助我......