【发布时间】:2012-08-16 13:07:04
【问题描述】:
如果有人知道如何在 java 应用程序中不使用 runtime 或 ProcessBuilder 来运行 unix 命令,我很感兴趣
【问题讨论】:
标签: java runtime processbuilder
如果有人知道如何在 java 应用程序中不使用 runtime 或 ProcessBuilder 来运行 unix 命令,我很感兴趣
【问题讨论】:
标签: java runtime processbuilder
您可以使用Apache Commons Exec 库中的DefaultExecutor 来执行命令,但它在内部使用java.lang.Runtime 和java.lang.Process。
我建议您在运行时使用这个库,因为 Apache 命令执行 API 更复杂,并且提供比 Java 运行时更多的功能。它还处理退出值。
【讨论】:
有很多可能的方法;但如果不了解你的动机,我就不能称它们为可取的。
例如,用 C 或 Perl 或任何语言编写程序并让它在套接字上侦听。然后,您的 java 程序可以连接到套接字并发送一条消息,其中包含要生成的程序名称、参数等。接收程序可以继续并生成它。
【讨论】:
Unix命令有两种执行方式:
java.lang.Runtime 和java.lang.Process
system() 和exec*() 在 Unix 上)。不推荐使用第二种方法:很难做到正确,最终你会得到与Runtime.exec()功能完全相同的东西
如果您只需要功能,那么您可以在Java 中再次实现这些命令。例如,要实现ls,请使用File.listFiles()
【讨论】: