我想从Java程序运行linux脚本,并且只在脚本停止时才继续执行程序。我对阅读脚本输出不感兴趣...任何人都可以帮助我吗? 非常感谢, 并原谅我的英语不好
答案 0 :(得分: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了解如何设置,然后启动它。
答案 1 :(得分:1)
您也可以改为启动bash解释器
Process proc = Runtime.getRuntime().exec("/bin/bash /path/to/myscript");
int ecode = proc.waitFor();
当@rolfl解决方案可能无效时(非可执行脚本文件,#!/标头丢失等),这可能适用于一些普遍破坏的情况