我正在开发一个Web应用程序,其中我使用Java作为我的前端,并将shell用作我的后端。我在shell中处理很多文件..例如,如果我必须处理100个文件。我计划从Java应用程序产生4个子进程。我读了关于process Builder的内容。但是我没有清楚地知道如何使用start()方法产生多个进程,然后等待所有进程,直到完成并再次继续处理。任何想法都会对我非常有用。谢谢。使用来自Java的进程生成器产生多个进程
1
A
回答
2
一般来说,开始将代表您致电Runtime.exec(...)
。
一旦运行(关闭它自己的小进程),您可以通过进程输入和输出流与它进行交互。
在我自己的工作中,我监视输入和错误流。我通过为每个流派生一个新线程并通过stream.read()
方法监视通过放置的方法并查找-1的返回结果来确定流何时完成。
我使用第三个“监视器”线程,它用于提供“waitFor”功能并帮助清理流线程。
我会推荐至少读取单独线程中的输入和错误流,因为这样可以监视进程而不会阻塞当前线程上下文。
如果您想等待过程退出,则应使用Process.waitFor()
(该过程由ProcessBuilder.start()
方法返回给您)。这将等待进程退出。此方法将返回该进程的退出代码,可用于响应该进程可能想要告诉您的错误。
好了,总之......
ProcessBuilder pb = new ProcessBuilder(new String[] {cmd, parameter1, parameter2, ...});
Process process = pb.start();
InputStream is = process.getInputStream();
InputStream isErr process.getErrorStream();
// Spawn some threads to process the streams
int exitValue = process.waitFor();
if (exitValue == 0) {
System.out.println("All is good with the world");
} else {
// Handle error
}
相关问题
- 1. Java进程生成器生成命令
- 2. 使用Python产生多个进程
- 3. Pydev中的Django产生多个进程?
- 4. 如何销毁从java中的进程生成器生成的进程
- 5. Upstart产生多个uWSGI Emperor进程
- 6. 生成许多进程erlang
- 7. 杀死产生进程的进程
- 8. Java简单进程生成器问题
- 9. 用PHP产生多个进程来处理数据。
- 10. 暂停由java产生的子进程
- 11. 使用进程生成器重定向进程输出
- 12. 产生多个进程来编写不同的文件Python
- 13. Java重生进程
- 14. 多处理不会产生新进程
- 15. C#Excel COM Interop:产生太多进程
- 16. Java进程对其他窗口进程产生优先
- 17. 不能产生子进程
- 18. 从父进程派生/产生许多node.js进程的最高性能方式
- 19. 的java管/进程生成不CMD.EXE
- 20. Visual Studio:产生进程时自动附加到进程
- 21. Linux进程产生/创建触发器
- 22. 使用进程生成器从java中运行cmd命令
- 23. 使用java进程生成器播放wav文件
- 24. 使用进程生成器在Internet Explorer中打开文件Java
- 25. 关于一个进程和产生它的进程(win32/C)
- 26. 如何防止从产卵子进程产生的进程?
- 27. Fortran中的生成进程
- 28. Java进程生成器在成功启动外部进程后返回null
- 29. 在完成之前停止使用pool.apply_async()产生的进程
- 30. start-stop-daemon产生2个进程
谢谢你的帮助。现在我的问题是我有我打电话......问题是,这个shell脚本内的awk脚本当我调用shell脚本时,awk脚本没有被执行。Wat可能是这个问题... – NandaKumar 2012-07-23 00:14:29