我在java程序中想启动另一个由命令行输入的dos程序,那个dos程序的功能是不断向日志文件里写数据,直到我手动ctrl+c停止为止(也可以使用process.destroy()让进程终止)。
    我按照常规runtime.getruntime().exec(command)运行后结果是那个程序只在开始运行的时候写了一行数据,就再也不继续写数据了,而windows资源管理器中显示该进程始终是存在的。后来我查了java api关于对process.exec()的介绍,估计是该进程死锁了。后来在网上找了用inputstreamreader来读取输出流的办法,或者让errorstream,inputstream各自走自己的线程,感觉那种方法只能针对那些一次性操作后结束的dos程序,而无法解决这种始终在后台运行并且不断有输出的控制台程序的问题。
    另外:该dos程序在开启时会先在dos界面打出数十行的状态数据,然后才开始工作,向一个日志文件写数据。而我使用inputstreamreader来读取输出流的办法,在状态数据读取不到一半的时候就卡住了(errorstream,inputstream使用多线程也是如此)。
    想请教熟悉这方面编程的达人,这类问题该如何解决?或者有什么其它变通的办法?