續 linux C語言 檔案描述符 讀寫位址分析

2021-06-26 12:57:18 字數 1119 閱讀 8600

記錄日期:2014-10-23 20:08

日子背景:前些天在整理「智慧型相機人數統計」資料的儲存問題,由於對fopen開啟方式的形式不是很了解,導致讀寫檔案時一直異常,浪費了很多寶貴的時間,為了避免相同的朋友走同樣的彎路,同時也警示自己不要犯同樣的錯誤,特此記錄,望對有需求的您有所幫助。

我在操作檔案時,就是理解錯了a/a+的開啟檔案的原理。導致原本想儲存乙個指定最大值的檔案大小的檔案時,出現了,資料寫正確,但是讀出來的資料錯誤,檔案也一直在增大。後來使用a + r+的方式綜合開啟檔案的:先用a的方式開啟,然後立即關閉檔案,保證了檔案不存在時,會自動建立;然後馬上用r+的方式再此開啟,保證了資料可以同時被讀 和 寫,且不要的資料可以結合fseek來覆蓋,即達到了,資料檔案不會超過指定大小。

具體見下面對linux手冊的對fopen的進一步詳解。

fopen():

r :以唯讀方式開啟檔案檔案,前提是 該檔案必須存在------>程式中只可對獲取到的檔案描述符進行讀操作;

r+:以可讀可寫的檔案,前提是 該檔案必須實現存在--------->程式中可對獲取到的檔案描述符進行讀 或 寫 操作;

w:以只寫方式開啟檔案,如檔案已經存在,則會將原始檔內容清空,若不存在,則會新建檔案------------->在每次開啟檔案時,檔案原來的內容會被刪除,程式只可對獲取到的檔案描述符進行寫操作;

w+:以可讀可寫方式開啟檔案,如果檔案已經存在,則會將原始檔內容清空,若不存在,則會新建檔案------>在每次開啟檔案時,檔案原來的內容會被刪除,程式可對獲取到 的檔案描述符進行讀 和 寫操作;

a:以附加方式開啟只寫檔案,如檔案存在,則寫入的資料會被追加到檔案尾,即原始檔會被儲存下來,若檔案不存在,則會新建檔案-------->附加的方式:是指不管如何對其檔案如何操作,原始檔的內容都會被儲存下來,即使使用fseek移動寫入指標,原資料依然不會被覆蓋,新寫入的資料會被插入到原始資料之間,即資料會隨著寫入越來越大。

a+:以附加方式開啟可讀可寫檔案,如檔案存在,則寫入的資料會被追加到檔案尾,即原始檔被儲存下來,若檔案不存在,則會新建檔案-------->附加的方式:是指不管如何對其 檔案如何操作,原始檔的內容都會被儲存下來,即使使用fseek移動寫入指標,原資料依然不會被覆蓋,新寫入的資料會被插入到原始資料之間,即資料會隨著寫入越來大。

mysql 檔案描述符 檔案描述符

toc 首先,linux的世界裡一切皆為檔案,無論是裝置還是乙個socket連線。檔案又可分為 普通檔案 目錄檔案 鏈結檔案和裝置檔案。檔案描述符 file descriptor 是核心為了高效管理已被開啟的檔案所建立的索引,其是乙個非負整數 通常是小整數 用於指代被開啟的檔案,所有執行i o操作的...

C語言 檔案描述符

以下程式為linux或unix平台下 例 int f1,f2 f1 open test1 o rdonly,0 close f1 f2 open test2 o rdonly,0 printf f2 d n f2 最後應該輸出什麼?f1,f2代表的是檔案描述符,unix程序從生命週期開始時,開啟的描...

檔案描述符

檔案描述符 是個很小的正整數,它是乙個索引值,指向核心為每乙個程序所維護的該程序開啟檔案的記錄表。檔案描述符的優點 相容posix標準,許多 linux 和unix 系統呼叫都依賴於它。檔案描述符的缺點 不能移植到unix以外的系統上去,也不直觀。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案...