有没有一种简单的方法来读取子进程无缓冲的输出?我正在尝试从Java调用一个C程序,但显然当连接到管道时它是stdout块缓冲,只有在连接到控制台时才进行行缓冲.我无法修改C程序.
也许有办法欺骗程序认为它连接到控制台?对于适用于Linux的解决方案的奖励积分.
pau*_*sm4 -1
好的 -
1) “行缓冲输入”是控制台模式程序的常见习惯用法,可以追溯到原始的 Unix 和串行模式 VTxx 终端。
2) 您可以读取“原始、无缓冲”I/O(一次击键,而不是一次一行),但详细信息是特定于操作系统的。无论您需要在特定操作系统上执行什么操作,几乎都可以通过 Java 执行。
3)听起来您希望能够拦截 Windows 键盘上的“向上箭头”键或“向下翻页”键。也许用于玩游戏,或用于与控制台模式用户界面交互。
4)有多种选择。您可能希望考虑的是“机器人”API,用于测试:
如果这还不够,请提供更多有关您如何尝试让 Java 程序与 C 程序交互的详细信息(并澄清平台是否确实是 Windows 和 DOS 提示符)。