Linux的檔案操作

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   使用   ar   檔案   2014   

 

1. 建立

int creat(const char *filename, mode_t mode);

參數mode指定檔案的存取許可權,mode同umask一起決定檔案的最終許可權(mode&umask),umask代表了檔案在建立時需要去掉的一些存取許可權。

umask可通過系統調用umask()來改變:

int umask(int newmask);

該調用將umask設定為newmask,函數返回舊的umask許可權,它隻影響讀,寫和執行的許可權。

 

2. 開啟

int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);

open()函數有兩種方式,其中pathname是檔案路徑名,預設預設為當前路徑下。

flags表示如下:

O_RDONLY, O_WRONLY, O_RDWR三個標誌只能使用其中的一個,

如果使用了O_CREAT標誌,則使用函數必須指定mode用來表示檔案的存取權限,

int open(const char *pathname, O_CREAT, mode_t mode);

mode表示如下:

 

3. 讀寫

檔案open後我們返回一個fd(檔案描述符),我們通過檔案描述符才能進行讀寫,

int read(int fd, const void *buf, size_t length);int write(int fd, const void *buf, size_t length);

其中buf為指向緩衝區的指標,length為緩衝區的大小(以位元組為單位)。

函數read()實現從檔案描述符fd所指定的檔案中讀取length個位元組到buf所指向的緩衝區中,傳回值為實際讀取的位元組數。

函數write()實現將length個位元組,從buf所指向的緩衝區中寫入到檔案描述符fd所指向的檔案中,傳回值為實際寫入的位元組數。

 

4. 定位

對於隨機檔案,我們可以隨機的指定位置讀寫,可使用如下函數進行定位:

int lseek(int fd, offset_t offset, int whence);

lseek()將檔案讀寫指標相對whence移動offset個位元組。操作成功,返迴文件指標相對於檔案頭的位置。

參數whence可使用下述值:

SEEK_SET: 相對檔案開頭

SEEK_CUR: 相對檔案讀寫指標的當前位置

SEEK_END: 相對檔案末尾

offset可取負值,lseek(fd,-5,SEEK_CUR)檔案指標相對於當前位置向前移動5個位元組。

由於lseek函數返迴文件開頭到當前指標的位元組長度,所以lseek(fd, 0, SEEK_END)返回的就是整個檔案長度。

 

5. 關閉

int close(int fd);

 

Linux的檔案操作

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.