繁体   English   中英

通过java运行linux命令。

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM