java - java Runtime.exec(String[]) 平台独立吗?

标签 java process command-execution

我有一些通过 Runtime.getRuntime.exec(String) 运行命令的代码,它在 Windows 上运行。当我将代码移至 Linux 时,它崩溃了,修复它的唯一方法是切换到 exec(String[]) 版本。如果我保持这种方式,代码在 Windows 和 Linux 上的工作方式是否相同,或者我应该在 Windows 上使用 exec(String) 而在 Linux 上使用 exec(String[])?

最佳答案

两者都使用String[]

答案我gave you before是调试在 Windows 上运行的生产软件的几个悲惨小时的结果。

经过大量努力,我们(我)找到了之前发布的解决方案(使用String[])

由于您遇到的问题是在 Linux 上,我想最好在两者上都使用数组。

顺便说一句。我用 Java 1.4 尝试了该方法,从那时起一个新类可用:ProcessBuilder添加于 Java1.5。我不确定这是怎么回事,但应该有充分的理由。看看它并了解 Runtime.exec 之间的区别。可能这将是一个更好的选择。

最后,有些命令在任何一个平台上都不起作用,因为它们是内置于 shell(Windows cmd 或 bash/sh/等)中的,例如 direcho 以及其中一些。所以我建议在每个目标平台上进行额外/额外的测试,并为不受支持的命令添加异常处理程序。

:)

关于java - java Runtime.exec(String[]) 平台独立吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081084/

相关文章:

java - 使用多个属性查找匹配对象

java - 如何在 Java 9 上运行 jol?

java - 更改整个 JFrame 的字体类型和大小?

java - 使用 Swing 从下到上显示项目列表

java - 远程执行交互式 CLI 程序

java - 如何隐藏java进程的参数?

linux - 创建和收获子进程

安卓广播接收器 : run it on default process or in a new one?

ruby - 如何在不使用空格字符的情况下运行 unix 命令,以便执行远程命令?

c++ - 需要帮助理解这个简短的 C++ 程序及其漏洞