[英]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.