[英]Run linux command through java.
我想通过Java在Linux中运行nm命令。
我尝试了这段代码:
command = "nm -l file1.o > file1.txt";
Process p = Runtime.getRuntime().exec(command);
但这不起作用,代码有什么问题?
那不是可执行文件,实际上是shell脚本。
如果使用-c调用shell,则可以执行命令:
/bin/sh -c "command > here"
这是您需要做的:
String command = "nm -l file1.o > file1.txt";
Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", command});
以下“简单答案” 将无法使用 :
String command = "/bin/sh -c 'nm -l file1.o > file1.txt'";
Process p = Runtime.getRuntime().exec(command);
因为exec(String)
方法使用空格作为分隔符并忽略任何引号来天真地拆分其字符串。 因此,上面的示例等效于提供以下命令/参数列表。
new String[]{"/bin/sh", "-c", "'nm", "-l", "file1.o", ">", "file1.txt'"};
管道的替代方法是读取命令的标准输出,例如, Java exec()不会返回管道连接命令的预期结果 。
无需使用“>”。file.txt“重定向输出,而是可以读取输出内容并将其写入StringBuffer或OutputStream或任何您喜欢的内容。
这样的好处是您还可以读取stderr并查看是否存在错误(例如设备上没有剩余空间等)。 (您也可以使用“ 2>”来执行此操作)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.