如果STDOUT缓冲区溢出会发生什么
What happens if STDOUT buffer is overflowed
我想知道如果stdout缓冲区溢出会发生什么?
例如:app 1
启动app 2
,将N
行写入其stdin
,THEN读取其stdout
。第二个应用程序只是将它得到的所有内容从stdin
重写到stdout
。在app 1
完成对app 2
的N
行的写入并切换到读取其stdout
的时刻,app 2
已经完成了对stdout
的行的打印。这些数据在其stdout的缓冲区中。随着N
的增加,我们可能会溢出缓冲区。
然后会发生什么?app 2
会崩溃还是进程阻塞?如果是崩溃,错误代码(linux)会是什么?
编辑:一些代码http://pastebin.com/msMRdxGR
我收到SIGPIPE错误。(使用了错误的标签-app1是app2,反之亦然)。
很抱歉从一开始就没有问,但有办法避免这个错误吗?如果app2使用两个线程,一个用于读取,另一个用于写入。并在堆中动态分配内部缓冲区,以便在它们之间交换数据。然后,如果没有人读取我的stdout,我就可以从读取线程暂停写入线程。但是我怎样才能检测到stdout buf很快就会溢出呢?
如果操作系统设备缓冲区已满,进程将阻塞。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- GetModuleFilenameEx返回0,getlasterror返回溢出错误.我究竟做错了什么
- 当i++导致整数溢出时会发生什么
- 缓冲区溢出时会发生什么
- 我的溢出()实现有什么问题
- 在这种情况下,溢出是什么意思
- 如果STDOUT缓冲区溢出会发生什么
- 指针下溢或溢出时会发生什么情况
- 不同的编译器用来处理数字转换中的溢出的常见策略是什么?
- 我的while程序溢出了?我做错了什么?
- 在c++中检测缓冲区溢出源的最佳方法是什么?
- 什么时候需要检查整数溢出
- 是什么原因导致此缓冲区溢出警告超过64位VS2012编译环境
- 是什么导致了 fprintf 的C++缓冲区溢出错误