java – 为什么Process.waitFor()永远不会返回?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么Process.waitFor()永远不会返回?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含756字,纯文字阅读大概需要2分钟。
内容图文
![java – 为什么Process.waitFor()永远不会返回?](/upload/InfoBanner/zyjiaocheng/708/920cbf30efeb4893a0ae6f2a1f0fce7e.jpg)
我正在以下列方式从Java代码启动一个Windows进程(用C编写但我没有源代码):
Process p1 = Runtime.getRuntime().exec(cmdAndParams);
p1.waitFor();
我的问题是waitFor()方法永远不会结束.因此,我尝试在一个简单的shell中启动该过程,它正确地结束了shell中的许多打印(我想是标准输出).
因此,我决定创建并启动读取标准输出的线程,即使我现在不需要这些输出.这解决了这个问题.
所以我的问题是以下问题:这个解决方案是“启动和等待具有输出的外部进程的Java标准”,还是意味着本机进程中存在某个问题?如果存在这样的问题,C编程“错误”可能是问题的根源吗?
解决方法:
这是OS的事情.子进程正在写入stdout,并且正在缓冲,等待Java进程读取它.当你不读它时,缓冲区最终填满,子进程阻止写入stdout等待缓冲区空间.
您必须处理子进程’stdout(和stderr),无论您使用哪种语言.
我建议你阅读this article(全部4页)并在那里实施建议.
内容总结
以上是互联网集市为您收集整理的java – 为什么Process.waitFor()永远不会返回?全部内容,希望文章能够帮你解决java – 为什么Process.waitFor()永远不会返回?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。