嵌入式Linux開發(fā)實踐教程(第2版)課件:文件IO編程_第1頁
嵌入式Linux開發(fā)實踐教程(第2版)課件:文件IO編程_第2頁
嵌入式Linux開發(fā)實踐教程(第2版)課件:文件IO編程_第3頁
嵌入式Linux開發(fā)實踐教程(第2版)課件:文件IO編程_第4頁
嵌入式Linux開發(fā)實踐教程(第2版)課件:文件IO編程_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

文件I/O編程文件描述符文件描述符是一個非負(fù)的整數(shù),它是一個索引值,并指向在內(nèi)核中每個進(jìn)程打開文件的記錄表。當(dāng)打開一個現(xiàn)存文件或創(chuàng)建一個新文件時,內(nèi)核就向進(jìn)程返回一個文件描述符;當(dāng)需要讀寫文件時,也需要把文件描述符作為參數(shù)傳遞給相應(yīng)的函數(shù)。打開文件Flag標(biāo)記O_RDONLY就表示以只讀方式打開O_WRONLY表示以只寫方式打開O_RDWR表示以可讀可寫方式打開當(dāng)打開已經(jīng)存在并且內(nèi)部有內(nèi)容的文件時O_APPEND標(biāo)志:以添加方式打開文件,在打開文件的同時,文件指針指向文件的末尾,即將寫入的數(shù)據(jù)添加到文件的末尾O_TRUNC標(biāo)志:若文件已經(jīng)存在,那么會刪除文件中的全部原有數(shù)據(jù),并且設(shè)置文件大小為0文件讀寫控制文件讀寫位置lseek參數(shù)fd:已經(jīng)打開的文件描述符。offset:偏移量,每一讀寫操作所需要移動的距離,單位是字節(jié),可正可負(fù)(向前移,向后移)。whence:當(dāng)前位置的基點。SEEK_SET:當(dāng)前位置為文件的開頭,新位置為偏移量的大小SEEK_CUR:當(dāng)前位置為文件指針的位置,新位置為當(dāng)前位置加上偏移量SEEK_END:當(dāng)前位置為文件的結(jié)尾,新位置為文件的大小lseeklseek文件開始文件結(jié)束fcntl函數(shù)fcntl參數(shù)fd:已經(jīng)打開的文件描述符。cmd

:不同的命令struct

flock

*lock:設(shè)置記錄鎖的具體狀態(tài)

fcntl參數(shù)F_DUPFD與dup函數(shù)功能一樣,復(fù)制由fd指向的文件描述符,調(diào)用成功后返回新的文件描述符,與舊的文件描述符共同指向同一個文件。F_GETFD讀取文件描述符close-on-exec標(biāo)志F_SETFD將文件描述符close-on-exec標(biāo)志設(shè)置為第三個參數(shù)arg的最后一位F_GETFL獲取文件打開方式的標(biāo)志,標(biāo)志值含義與open調(diào)用一致F_SETF設(shè)置文件打開方式為arg指定方式fcntl參數(shù)F_SETLK此時fcntl函數(shù)用來設(shè)置或釋放鎖。當(dāng)short_l_type為F_RDLCK為讀鎖,F(xiàn)_WDLCK為寫鎖,F(xiàn)_UNLCK為解鎖。如果鎖被其他進(jìn)程占用,則返回-1;這種情況設(shè)的鎖遇到鎖被其他進(jìn)程占用時,會立刻停止進(jìn)程。F_SETLKW此時也是給文件上鎖,不同于F_SETLK的是,該上鎖是阻塞方式。當(dāng)希望設(shè)置的鎖因為其他鎖而被阻止設(shè)置時,該命令會等待相沖突的鎖被釋放。F_GETLK第3個參數(shù)lock指向一個希望設(shè)置的鎖的屬性結(jié)構(gòu),如果鎖能被設(shè)置,該命令并不真的設(shè)置鎖,而是只修改lock的l_type為F_UNLCK,然后返回該結(jié)構(gòu)體

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論