我們將第三個參數寫為. . .,這是ANSI C 說明余下參數的數目和類型可以變化的方法。對于open 函數而言,僅當創建新文件時才使用第三個參數。在函數原型中此參數放置在注釋中。pathname是要打開或創建的文件的名字。oflag參數可用來說明此函數的多個選擇項。用下列一個或多個常數進行或運算構成oflag參數(這些常數定義在<fcntl.h>頭文件中): o O_RDONLY 只讀打開。 o O_WRONLY 只寫打開。 o O_RDWR 讀、寫打開。
close函數用于關閉一個打開文件: #include <unistd.h> int close (int filedes); 返回:若成功為0 ,若出錯為-1 關閉一個文件時也會釋放該進程加在該文件上的所有記錄鎖。當一個進程終止時,它所有的打開文件都由內核自動關閉。很多程序都使用這一功能而不顯式地用close關閉打開的文件。
3.6 lseek 函數
每個打開文件都有一個與其相關聯的"當前文件位移量"。它是一個非負整數,用以度量從文件開始處計算的字節數。(本節稍后將對"非負"這一修飾詞的某些例外進行說明。)通常,讀、寫操作都從當前文件位移量處開始,并使位移量增加所讀或寫的字節數。按系統默認,當打開一個文件時,除非指定O_APPEND選擇項,否則該位移量被設置為0。 可以調用l s e e k 顯式地定位一個打開文件。 #include <sys/types.h> #include <unistd.h> off_t lseek(int f i l e d e s, off_t o f f s e t, int w h e n c e) ; 返回:若成功為新的文件位移,若出錯為-1 對參數offset 的解釋與參數w h e n c e 的值有關: o 若whence是SEEK_SET,則將該文件的位移量設置為距文件開始處offset 個字節。 o 若whence是SEEK_CUR,則將該文件的位移量設置為其當前值加offset, offset 可為正或負。 o 若whence是SEEK_END,則將該文件的位移量設置為文件長度加offset, offset 可為正或負。 若lseek成功執行,則返回新的文件位移量,為此可以用下列方式確定一個打開文件的當前位