如何从Java中的另一个应用程序读取STDOUT而不缓冲

如何从Java中的另一个应用程序读取STDOUT而不缓冲,第1张

概述如何从Java中的另一个应用程序读取STDOUT而不缓冲

从Java开始,我运行一个C ++应用程序,logging进程的进展情况,并希望监视进程的持续进行,所以(在Java中)我监视process.getinputStream()和process.getErrorStream()。 当我从命令行运行C ++应用程序时,日志一次显示一行(大约1行,只有1-2秒)。 从Java监视器,我没有实时获取数据,并不知道是谁在缓冲它。

我可以看看C ++代码(尽pipe它非常复杂),并尝试根据需要放入flush()调用,但是当我从cmd.exe运行数据时,实时显示数据,所以在这之前,我想看看是否还有其他事情要做。 Java中有什么我必须做的实时获取数据,以确保inputstream不被缓冲?

我在windows XP及以上版本运行。

我试过了

从Java生成的batch file启动程序

symlink()NotImplementedError rabl

将django manage.py输出(在windows中)redirect到一个文本文件

自定义保存文件对话框类似于底层 *** 作系统保存对话框C#

无法设置图像打开我的程序,为什么不?

for (;;) { int c = is.read(); if (c < 0) { break; } System.out.print(c); System.out.flush(); } if (true) { return; }

也试过了

inputStreamReader isr = new inputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line = null; while ((line = br.readline()) != null) { synchronized (lastActivityTime) { lastActivityTime = java.util.Calendar.getInstance().getTimeInMillis(); } if (pw != null) { pw.println(type + line); pw.flush(); } }

如果我input错误的dos命令,shellexecute会给出正确的结果

C#任务计划修改

如何获得windows 7中的所有电源scheme的名称在C + +?

如何在python中打印颜色/颜色?

与windows命名pipe道(.Net)的asynchronous双向通信

在stdio库中,是进行缓冲的源程序。 在Java端没有什么可以做的。 你必须把fflush()调用放到C ++代码中,或者等待。 当您从cmd.exe运行时,数据实时显示,因为stdio在连接到它认为是真正的终端时行为不同。

总结

以上是内存溢出为你收集整理的如何从Java中的另一个应用程序读取STDOUT而不缓冲全部内容,希望文章能够帮你解决如何从Java中的另一个应用程序读取STDOUT而不缓冲所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1276045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存