我已经在我的Java代码中启动了一个进程,这个进程需要很长时间才能运行,并且可能会不时产生一些输出。我需要在产生任何输出时作出反应,最好的方法是什么?监视进程输出及其执行的最佳方式
0
A
回答
1
你在说什么反应?该过程是否写入其标准输出和/或标准错误?如果是这样,我怀疑Process.getInputStream
和Process.getErrorStream
是你在找什么。从这两个阅读,并作出相应的反应。请注意,您可能希望从不同的线程读取它们,以避免任何一个流的单独缓冲区被填满。
或者,如果您不需要两个分开,只需将中的redirectErrorStream
设置为false,以便合并错误和输出流。
1
您应该启动一个从Process.getInputStream()
和getErrorStream()
(或者使用ProcessBuilder.redirectErrorStream(true)
)中读取的线程,并在流中显示某些内容时对其进行处理。如何处理它有很多方法 - 正确的方法取决于数据的使用方式。请告诉更多细节。
这里是一个现实生活中的例子:SbtRunner使用ProcessRunner向命令行应用程序发送命令并等待命令完成执行(当命令完成执行时,应用程序将打印“>”)。有一些间接发生,使得从进程的输出中读取更容易(输出写入MulticastPipe,然后从OutputReader读取它)。
相关问题
- 1. 什么是监视大量Ruby进程的最佳方式?
- 2. 自动执行邮件进程的最佳方式
- 3. 什么是监视.NET应用程序的最佳方式?
- 4. 运行“无尽”进程监控MySQL的最佳方法?
- 5. 执行涉及Java的RAW套接字编程的最佳方式
- 6. 执行此操作的最佳方式
- 7. 执行搜索的最佳方式
- 8. 处理线程最大执行时间的最佳方式(Java)
- 9. 使用C#进行视频流式传输的最佳实践
- 10. 阻止主线程完成其执行的最佳方法
- 11. 监视tomcat执行程序?
- 12. 以编程方式添加和删除视图及其控制器的最佳方式是什么?
- 13. 经常监视位置的最佳方式
- 14. 监视IOCTLs的最佳方式是什么?
- 15. 使用bootstrap选项卡及其内容的最佳方式
- 16. 什么是从PHP输出新行到shell的最佳方式?
- 17. 列出线程及其动作的最佳摆动容器?
- 18. 监视启动过程的最佳方法
- 19. 如何在Windows中监视进程/程序的执行?
- 20. 监视进程
- 21. 最大输出的最佳线程数
- 22. 执行监视包
- 23. 运行Laravel队列的“最佳方式”监听
- 24. 产卵和监测过程的最佳方式?
- 25. 如何监视新的根进程的执行情况?
- 26. 最佳方式“退出”
- 27. 监视java线程执行的工具
- 28. 在Linux上对Java应用程序进行守护进程的最佳方式
- 29. 使用输入和输出表的最佳方式
- 30. 正确启动多个TweetStream守护进程以进行监视Twitter的方式
感谢您的链接,我会检查出来 – eric2323223 2010-07-20 16:54:34