我想从 Java 程序运行 linux 脚本并仅在脚本停止时继续执行程序。我对阅读脚本输出不感兴趣......有人可以帮助我吗?非常感谢,请原谅我的英语不好
问问题
1337 次
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 javadoc和ProcessBuilder 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 回答