lseek

調用lseek顯式的爲一個打開文件設置偏移量網絡

#include <unistd.h>ip

off_t lseek(int fd, off_t offset, int where);pip

返回值:成功,返回新的文件偏移量;出錯,返回-1文件

參數:pipe

  offset:內核

    相對where偏移的位置,能夠爲正數也能夠爲負數。當爲正數時,從where開始向後偏移offset個字節;當爲負數時,從where開始向前偏移offset絕對值個字節。參數

  where:

    SEEK_SET  將文件的偏移量設置爲距離文件開始處offset個字節

    SEEK_CUR  將文件的偏移量設置爲當前值加offset個字節

    SEEK_END  將文件的偏移量設置爲文件長度加offset個字節

注:

  ①lseek能夠檢測文件是否支持設置偏移量,若是文件描述符指向一個pipe、FIFO或網絡套接字,則返回-1,並將errno設置爲ESPIPE。

  ②文件偏移量能夠大於當前文件大長度,在這種狀況下,對該文件的下一次寫將加長該文件,並在文件中構成一個空洞。位於文件中沒有寫過的字節都被讀爲0.

  ③lseek僅將當前文件的偏移量記錄在內核中,它並不引發任何的I/O操做。而後,該偏移量用於下一個讀或寫操做(這也是爲何設置偏移量後要向文件中寫一些內容才能建立空洞文件的緣由)  

例子:

相關文章
相關標籤/搜索