繁体   English   中英

多次调用std :: cout使子进程挂起

[英]Multiple calls to std::cout make subprocess hang

我将在这里复制上一个问题,以描述问题:

我用C ++编写了一个包含两部分的应用程序-前端和后端。 这两个使用wxWidgets提供的IPC层进行通信。 在后端,我使用一些旧函数来处理图像数据。 这些功能之一有时会挂起或陷入无限循环(我可以观察到某个时间点后,进程使用了​​0%的进程资源),但这仅在将后端作为前端的子进程运行时才会发生。 否则(当我手动运行它时)就可以正常工作。

事实证明,使用std::cout打印太多行会导致这种情况,但我想了解原因。 可能是wxWidgets使用了一些缓冲区来存储应用程序输出,而打印只是使它溢出了吗? 还是这是Windows的固有问题? 也许它可能与std::cout实现有关? 我很确定我无法用printf重现它似乎我错了printf也似乎触发了该问题

标准输出缓冲区的大小是有限的。 无论是文件,控制台窗口还是其他进程,都必须正在读取要写入缓冲区的内容。 如果您写入的速度快于读取器无法应付的速度,则缓冲区最终将填满并阻止任何进一步的写入,直到读取器读取了一些数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM