【发布时间】:2014-09-03 10:57:33
【问题描述】:
我需要使用 Java 自动运行 strace(当然是在 linux 系统上)。 所以当我执行类似的事情时:
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();
}
对不起,如果我在某个地方有错字,我是手工复制的。 谢谢!
【问题讨论】:
-
实际问题是什么,没有输出?
-
我得到了'echo hi'的输出。不是 strace 的输出。就像我根本没有使用 strace 一样。