重讀APUE 1 lseek注意事項

2022-09-05 13:24:13 字數 531 閱讀 4269

lseek使用的注意事項:

1. lseek的返回值,成功返回新的檔案偏移量,失敗返回-1,不能用<0判斷;因為檔案偏移量可能是正的,也可能是負的,所以不能使用<0判斷成功與否;注意:對於普通檔案,偏移量必須是非負的;但比如intel x86處理器上執行的freebsd裝置/dev/kmem就支援負的偏移量;

2. lseek只是把檔案偏移量存在核心中,用於下一次的讀或者寫,並不會引起io操作;lseek系統呼叫實際上最後會呼叫核心的file_operations->llseek函式;

3. 檔案偏移量可以大於檔案的當前長度;這種情況下,對該檔案的下一次寫將加長該檔案,並在檔案中構成乙個空洞;注意,位於檔案中,但是沒有寫過的位元組都被讀為0,並且這些空洞不需要占用磁碟儲存區;

4. 使用追加方式開啟檔案後呼叫lseek;可以呼叫lseek,read可以讀取任意設定的偏移位置的資料,但是write寫之前會將偏移設定到檔案尾,只能從檔案尾開始寫檔案;

APUE筆記(1) 配置APUE環境

本人用的是centos6.5版本的linux 寫這個環境配置是因為自己這一天被這個環境配置給搞的很難受 首先,我們在linux下找乙個資料夾,存放apue3的包 cd home src wget 然後解壓 tar zxv f src.3e.tar.gz 進入apue.3e資料夾 cd home sr...

APUE學習 執行緒(1)

執行緒 thread 輕量級的程序 cpu排程的最小單位,相比較於程序,程序是分配資源的最小單位。之前講到的是多程序程式設計,這一部分要說的是如何在乙個程序中實現多執行緒程式設計 當然將程序部分的內容放到一起,就可以實現多程序多執行緒程式設計 posix 可移植性作業系統介面 規定了可移植性的執行緒...

APUE 訊號1(自己的補充)

訊號是軟體中斷。訊號提供了一種處理一步事件的方法。1 訊號的概念 產生訊號的條件 1 當使用者按某些終端鍵時,引發終端纏身的訊號。如ctrl c通常產生中斷訊號 sigint ctrl 通常產生中斷訊號 sigquit 2 硬體異常產生訊號。除數為0 無效的記憶體引用等等。這些條件通常由硬體檢測到,...