-2

我想从 Java 程序运行 linux 脚本并仅在脚本停止时继续执行程序。我对阅读脚本输出不感兴趣......有人可以帮助我吗?非常感谢,请原谅我的英语不好

4

2 回答 2

2

假设所有其他线程都是空闲的:

// run the script.
Process proc = Runtime.getRuntime().exec("/path/to/myscript");
// wait for the return code.
int ecode = proc.waitFor();

如果你的脚本有更复杂的参数,或者它需要监控 STDOUT、STDERR,或者需要其他修改(比如向 STDIN 提供数据,或者更改执行目录、环境变量等),那么你应该执行相同的有效过程,但Runtime.exec(...)您应该手动构建和启动流程,而不是使用。阅读Process javadocProcessBuilder javadoc以了解如何设置并启动它。

于 2013-10-29T14:19:16.760 回答
1

您也可以改为启动 bash 解释器

Process proc = Runtime.getRuntime().exec("/bin/bash /path/to/myscript");
int ecode = proc.waitFor();

当@rolfl 解决方案可能不起作用(不可执行的脚本文件、#!/ 标头丢失等)时,这可能适用于一些通常被破坏的情况

于 2013-10-29T14:29:16.577 回答