我正在使用C#读取另一个程序的STDOUT。如果我这样做:

StreamReader reader = process.StandardOutput;
reader.ReadToEnd();


是否保证将最后的内容全部刷新到程序的STDOUT?还是像TCP,我必须具有消息终止符或长度标头?

最佳答案

默认情况下,StandardOutput是缓冲的,这意味着您可能会从另一端获取整个消息(或多个完整消息)。但这并不能真正保证,特别是因为您正在读取的进程可能会更改StandardOutput的缓冲。

消息终结者将是找出答案的最佳方法。尽管通常情况下,通过StandardOutput进行通信的过程都是基于行的,所以简单地使用换行符作为消息终止符可能是最简单,最常见的起点。

关于c# - STDIN/STDOUT是一次全部清除数据还是逐字符清除数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2796531/

10-10 20:55