运行strace并使用Java获取输出
我需要用Java自动运行strace(当然是在linux系统上)。 因此,当我执行以下操作时:运行strace并使用Java获取输出,java,linux,strace,Java,Linux,Strace,我需要用Java自动运行strace(当然是在linux系统上)。 因此,当我执行以下操作时: strace -f echo hi 我得到输出: hi 然而,当我在终端中运行命令时,我得到了通常的输出(系统调用和所有东西)。 我有一个解决方案,我使用“-o”标志将strace输出重定向到一个文件,然后读取该文件以获得输出,但这对我不再有好处。 所以我不明白,我做错了什么 以下是我执行命令的代码: System.out.println(exec("strace -f -q echo hi"))
strace -f echo hi
我得到输出:
hi
然而,当我在终端中运行命令时,我得到了通常的输出(系统调用和所有东西)。
我有一个解决方案,我使用“-o”标志将strace输出重定向到一个文件,然后读取该文件以获得输出,但这对我不再有好处。
所以我不明白,我做错了什么
以下是我执行命令的代码:
System.out.println(exec("strace -f -q echo hi"));
private String exec(String cmd) {
StringBuffer sb = new StringBuffer();
try {
Process p = Runtime.getRuntime().exec(cmd);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = "";
while((line = input.readLine()) != null) {
sb.append(line + "\n");
}
} catch (Exception ex) {
ex.printStackTrace();
}
return sb.toString();
}
对不起,如果我在什么地方打错了,我是用手抄的。
谢谢 我认为strace会将其输出写入STDERR 因此,解决方案是:
BufferedReader input = new BufferedReader(new InputStreamReader(p.getErrorStream()));
实际问题是什么,没有输出?我得到了“echo hi”的输出。不是strace的输出。好像我根本不用strace。