【发布时间】:2023-03-04 05:31:01
【问题描述】:
我知道使用Runtime.exec,你将它传递给一个本地程序来运行 + 参数。如果是常规程序,可以直接运行。如果是 shell 脚本,则必须运行外部 shell 程序,例如 sh 或 csh 或 cmd.exe。
是否有一些 Java 类(标准或开源)实现了 shell,即您将命令字符串或脚本传递到其中的程序,它执行命令并相应地重定向标准 I/O/err,以便你可以传入foo | bar > baz.out 之类的字符串,它会运行foo 和bar 程序,而无需在Java 之外运行另一个可执行文件?
(我所说的 shell 并不是指 BeanShell 或独立的 Rhino Javascript 解释器,它们是用于执行 Java 和 Javascript 代码的 Java 实现。我说的是用于执行非 Java 可执行文件并处理重定向管道的 Java 实现输入/输出。)
【问题讨论】:
-
如果有这样的事情我会感到惊讶,因为 Java 对系统编程来说是一个如此痛苦的环境(例如文件操作的神秘错误条件等)。