簡體   English   中英

C-fflush(stdout)的含義

[英]C - implications of fflush(stdout)

fflush(stdout) 除了刷新輸出緩沖區外還執行其他操作嗎?

或者是什么沖洗輸出緩沖意味着什么呢?

因為在調度程序中,我只是通過將fflush(stdout)扔到上下文開關中來解決了一個段錯誤,即使出於調試目的,所有對stdout寫操作都已被禁用,就我而言,這應該已經呈現了那種沖洗過時了。

對於輸出流,具有非​​null參數的fflush()會將流緩沖區中所有未寫入的數據寫入關聯的輸出設備。 它如何執行取決於實現。

因為在調度程序中,我只是通過將fflush(stdout)放入上下文開關來解決了段錯誤

您可以在程序開始時顯式關閉stdout以驗證您的發現。 很有可能問題出在其他地方,或者系統上流的實現存在問題。

沒有看到實際的代碼,我們只能推測。

但是,向函數中添加更多代碼可能會間接影響更改程序中的內存布局。 更改的性質(如果有)取決於函數的功能(它是否分配內存,聲明大量變量等),操作系統在運行時如何管理內存中的可執行代碼等。

奇怪的是,在代碼的其他地方,有一個無效的操作(帶有指針的無效操作等),並且附加語句的作用只是通過更改程序對受影響的內存執行的操作來更改症狀。

我認為fflush()中有一個錯誤很可能。 但是我不會對此打賭-諸如fflush()類的標准I / O函數已被許多人使用,並且此類函數中的錯誤已存在了一段時間(例如,已經發布了多個版本的供應商提供)在歷史上很可能已被發現,報告和修復。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM