ern*_*rn0 3 c linux pipe flush
我的程序在Linux上控制外部应用程序,通过管道将输入命令传递到外部应用程序stdin,并通过外部应用程序stdout的管道读取输出结果.
问题是对管道的写入是按块缓冲的,而不是按行缓冲的,因此在我的应用程序接收外部应用程序输出数据之前会发生延迟.无法更改外部应用程序以添加显式fflush()调用.
当我将外部应用程序设置为/ bin/cat -n(它回显输入,添加了行号)时,它正常工作,看起来,猫在每行之后刷新.强制外部应用程序刷新的唯一方法是向它发送exit命令; 当它收到命令时,它会刷新,所有答案都会在退出之前出现在标准输出上.
我很确定,Unix管道对于那种进程间通信(伪服务器 - 客户端)来说是合适的解决方案,但也许我错了.
(我刚刚从一个类似的问题中复制了一些文本:使用Python强制另一个程序的标准输出无缓冲)
| 归档时间: |
|
| 查看次数: |
3844 次 |
| 最近记录: |