日期:2014-05-20  浏览次数:20645 次

请教 runtime.getruntime().exec(command) 死锁问题(一般方案无法解决)
我在java程序中想启动另一个由命令行输入的dos程序,那个dos程序的功能是不断向日志文件里写数据,直到我手动ctrl+c停止为止(也可以使用process.destroy()让这个进程终止)。
        我按照常规runtime.getruntime().exec(command)运行后结果是那个程序只在开始运行的时候写了一行数据,就再也不继续写数据了,而windows资源管理器中显示该进程始终是存在的。后来我查了java   api关于对process.exec()的介绍,估计是该进程死锁了。后来在网上找了用inputstreamreader来读取输出流的办法,感觉那种方法只能针对那些一次性操作后结束的dos程序,而仍然无法解决这种始终在后台运行并且不断有输出的控制台程序的问题。
        想请教熟悉这方面编程的大人,这类问题该如何解决?或者说有什么其它变通的办法?
        第一次在csdn发贴,不知道这类问题该贴在哪个区,就先在这里问一下,小弟先谢过

------解决方案--------------------
利用Thread来试试
可以对线程进行wait,starrt,destory等操作
应该能满足你的要求的

当要退出的时候就system.exit(-1)了