Java用process调用c#的exe后,process.waitfor(). exe执行会停在某处。听说是waitfor引发的exe子线程死锁。c#
先存一个连接 http://yearsaaaa123789.iteye.com/blog/1404865线程
关键引用code
由于本地的系统对标准输入和输出所提供的缓冲池有效,因此错误的对标准输出快速的写入何从标准输入快速的读入都有可能形成子进程的所,甚至死锁。好了,问题的关键在缓冲区这个地方:可执行程序的标准输出比较多,而运行窗口的标准缓冲区不够大,因此发生阻塞。接着来分析缓冲区,哪来的这个东西,当Runtime对象调用exec(cmd)后,JVM会启动一个子进程,该进程会与JVM进程创建三个管道链接:标准输入,标准输出和标准错误流。假设该程序不断在向标准输出流和标准错误流写数据,而JVM不读取的话,当缓冲区满以后将没法继续写入数据,最终形成阻塞在waitfor()这里。