?? fcntl.h
字號:
#ifndef _FCNTL_H#define _FCNTL_H#include <sys/types.h> // 類型頭文件。定義了基本的系統數據類型。/* open/fcntl - NOCTTY, NDELAY isn't implemented yet *//* open/fcntl - NOCTTY 和NDELAY 現在還沒有實現 */#define O_ACCMODE 00003 // 文件訪問模式屏蔽碼。// 打開文件open()和文件控制fcntl()函數使用的文件訪問模式。同時只能使用三者之一。#define O_RDONLY 00 // 以只讀方式打開文件。#define O_WRONLY 01 // 以只寫方式打開文件。#define O_RDWR 02 // 以讀寫方式打開文件。// 下面是文件創建標志,用于open()。可與上面訪問模式用'位或'的方式一起使用。#define O_CREAT 00100 /* not fcntl */ // 如果文件不存在就創建。#define O_EXCL 00200 /* not fcntl */ // 獨占使用文件標志。#define O_NOCTTY 00400 /* not fcntl */ // 不分配控制終端。#define O_TRUNC 01000 /* not fcntl */ // 若文件已存在且是寫操作,則長度截為0。#define O_APPEND 02000 // 以添加方式打開,文件指針置為文件尾。#define O_NONBLOCK 04000 /* not fcntl */ // 非阻塞方式打開和操作文件。#define O_NDELAY O_NONBLOCK // 非阻塞方式打開和操作文件。/* Defines for fcntl-commands. Note that currently* locking isn't supported, and other things aren't really* tested.*//* 下面定義了fcntl 的命令。注意目前鎖定命令還沒有支持,而其它* 命令實際上還沒有測試過。*/// 文件句柄(描述符)操作函數fcntl()的命令。#define F_DUPFD 0 /* dup */ // 拷貝文件句柄為最小數值的句柄。#define F_GETFD 1 /* get f_flags */ // 取文件句柄標志。#define F_SETFD 2 /* set f_flags */ // 設置文件句柄標志。#define F_GETFL 3 /* more flags (cloexec) */ // 取文件狀態標志和訪問模式。#define F_SETFL 4 // 設置文件狀態標志和訪問模式。// 下面是文件鎖定命令。fcntl()的第三個參數lock 是指向flock 結構的指針。#define F_GETLK 5 /* not implemented */ // 返回阻止鎖定的flock 結構。#define F_SETLK 6 // 設置(F_RDLCK 或F_WRLCK)或清除(F_UNLCK)鎖定。#define F_SETLKW 7 // 等待設置或清除鎖定。/* for F_[GET|SET]FL *//* 用于 F_GETFL 或F_SETFL */// 在執行exec()簇函數時關閉文件句柄。(執行時關閉 - Close On EXECution)#define FD_CLOEXEC 1 /* actually anything with low bit set goes *//* 實際上只要低位為1 即可 *//* Ok, these are locking features, and aren't implemented at any* level. POSIX wants them.*//* OK,以下是鎖定類型,任何函數中都還沒有實現。POSIX 標準要求這些類型。*/#define F_RDLCK 0 // 共享或讀文件鎖定。#define F_WRLCK 1 // 獨占或寫文件鎖定。#define F_UNLCK 2 // 文件解鎖。/* Once again - not implemented, but ... *//* 同樣 - 也還沒有實現,但是... */// 文件鎖定操作數據結構。描述了受影響文件段的類型(l_type)、開始偏移(l_whence)、// 相對偏移(l_start)、鎖定長度(l_len)和實施鎖定的進程id。struct flock{ short l_type; // 鎖定類型(F_RDLCK,F_WRLCK,F_UNLCK)。 short l_whence; // 開始偏移(SEEK_SET,SEEK_CUR 或SEEK_END)。 off_t l_start; // 阻塞鎖定的開始處。相對偏移(字節數)。 off_t l_len; // 阻塞鎖定的大小;如果是0 則為到文件末尾。 pid_t l_pid; // 加鎖的進程id。};// 以下是使用上述標志或命令的函數原型。// 創建新文件或重寫一個已存在文件。// 參數filename 是欲創建文件的文件名,mode 是創建文件的屬性(參見include/sys/stat.h)。extern int creat (const char *filename, mode_t mode);// 文件句柄操作,會影響文件的打開。// 參數fildes 是文件句柄,cmd 是操作命令,見上面23-30 行。extern int fcntl (int fildes, int cmd, ...);// 打開文件。在文件與文件句柄之間建立聯系。// 參數filename 是欲打開文件的文件名,flags 是上面7-17 行上的標志的組合。extern int open (const char *filename, int flags, ...);#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -