如果有人知道如何在 Java 应用程序中不使用运行时或 ProcessBuilder 来运行 unix 命令,我很感兴趣
问问题
4247 次
3 回答
5
好吧,您可以使用Apache Commons Exec库中的DefaultExecutor来执行命令,但它在内部使用和.java.lang.Runtime
java.lang.Process
我建议您在 Runtime 上使用这个库,因为 Apache 命令执行 API 更复杂,并且提供比 Java Runtime 更多的功能。它还处理退出值。
于 2012-08-16T13:14:43.647 回答
0
有很多可能的方法;但是如果不了解您的动机,我就不能称它们为可取的。
例如,用 C 或 Perl 或任何语言编写程序并让它在套接字上侦听。然后,您的 java 程序可以连接到套接字并发送带有要生成的程序名称、参数等的消息。接收程序可以继续生成它。
于 2012-08-16T13:24:07.773 回答
-1
Unix命令有两种执行方式:
- 您可以使用
java.lang.Runtime
和java.lang.Process
- 您可以使用 JNI/JNA 访问共享库。所以你可以使用它来访问操作系统级别的命令来创建一个进程(在 Unix 上)
system()
。exec*()
不推荐第二种方法:很难做到正确,最终你会得到与Runtime.exec()
如果您只需要功能,那么您可以在 Java 中再次实现这些命令。例如,要实现ls
,使用File.listFiles()
于 2012-08-16T13:55:12.743 回答