我想从长时间运行的 shell 命令中获取可用的输出,而不是等待命令完成。我的代码在新线程中运行
Process proc = Runtime.getRuntime().exec("/opt/bin/longRunning");
InputStream in = proc.getInputStream();
int c;
while((c = in.read()) != -1) {
MyStaticClass.stringBuilder.append(c);
}
这个问题是我在/opt/bin/longRunning 中的程序必须在分配和读取 InputStream 之前完成。有什么好的方法可以异步执行此操作吗?我的目标是 ajax 请求将返回当前值 MyStaticClass.stringBuilder.toString() 每秒左右。
我卡在 Java 5 上了,仅供引用。
谢谢! W
最佳答案
试试Apache Common Exec .它具有异步执行进程然后将输出“泵送”到线程的能力。检查Javadoc了解更多信息
关于Java Runtime.exec() 异步输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7757942/