linux學習筆記之檔案IO

2021-08-09 02:40:39 字數 851 閱讀 7646

讀函式:

recv_fd = open(recv_file_name, o_rdwr | o_creat | o_trunc, 0764);

if (recv_fd < 0)

open函式的flag

讀寫許可權:

o_rdonly 

o_wronly 

o_nonblock

(1)阻塞與非阻塞。如果乙個函式是阻塞式的,則我們呼叫這個函式時當前程序有可能被卡住(阻塞住,實質是這個函式內部要完成的事情條件不具備,當前沒法做,要等待條件成熟),函式被阻塞住了就不能立刻返回;如果乙個函式是非阻塞式的那麼我們呼叫這個函式後一定會立即返回,但是函式有沒有完成任務不一定。

(2)阻塞和非阻塞是兩種不同的設計思路,並沒有好壞。總的來說,阻塞式的結果有保障但是時間沒保障;非阻塞式的時間有保障但是結果沒保障。

(3)作業系統提供的api和由api封裝而成的庫函式,有很多本身就是被設計為阻塞式或者非阻塞式的,所以我們應用程度呼叫這些函式的時候心裡得非常清楚。

(4)我們開啟乙個檔案預設就是阻塞式的,如果你希望以非阻塞的方式開啟檔案,則flag中要加o_nonblock標誌。

(2)只用於裝置檔案,而不用於普通檔案。

o_sync

(1)write阻塞等待底層完成寫入才返回到應用層。

(2)無o_sync時write只是將內容寫入底層緩衝區即可返回,然後底層(作業系統中負責實現open、write這些操作的那些**,也包含os中讀寫硬碟等底層硬體的**)在合適的時候會將buf中的內容一次性的同步到硬碟中。這種設計是為了提公升硬體操作的效能和銷量,提公升硬體壽命;但是有時候我們希望硬體不好等待,直接將我們的內容寫入硬碟中,這時候就可以用o_sync標誌。

Linux學習筆記之IO緩衝

寫的很好 現在,再聊不帶快取的i o操作 linix對io檔案的操作分為不帶快取的io操作和標準io操作 即帶快取 剛開始,要明確以下幾點 1 不帶快取,不是直接對磁碟檔案進行讀取操作,像read 和write 函式,它們都屬於系統呼叫,只不過在使用者層沒有快取,所以叫做無快取io,但對於核心來說,...

04 Linux下檔案IO 標準IO學習筆記

標準i o 流 標準io 流自動重新整理緩衝區 標準io 定位流 標準io 判斷流是否出錯和結束 標準io 格式化輸出 全緩衝 當流的緩衝區無資料或無空間時才執行實際的io操作 開啟檔案時,預設的緩衝方式 行緩衝 當在輸入和輸出中遇到換行符 n 時,進行io操作 和終端有關時,預設的緩衝方式 標準輸...

Linux學習筆記(6) 檔案I O

持續乙個禮拜的出差終於結束了,本次出差真是收益良多,不僅品嚐了正宗的大閘蟹,同時也是第一次體驗了產品的現場實施流程。明天開始繼續學習linux!分割線 因為各種原因,已經有十天沒有更新了,真是太不應該了,以後一定杜絕這種懶惰 無恥的情況!分割線 古話說得好,在linux之下,一切皆是檔案。有很多資源...