定義在 src\os\unix\ngx_files.h
#define ngx_open_file(name, mode, create, access) \open((const char *) name, mode|create, access)
name
:文件名(通常是一個字符串)。mode
:文件打開模式(如只讀、讀寫等)。create
:創建標志(如是否創建新文件)。access
:文件權限(如讀寫權限)。
open
?函數的主要作用是:
- 打開一個已存在的文件。
- 或者創建一個新的文件(如果文件不存在)。
- 返回一個文件描述符(file descriptor),用于后續的文件操作(如讀取、寫入、關閉等)。
函數原型
int open(const char *pathname, int flags, mode_t mode);
參數說明
pathname :類型:const char *
含義:要打開或創建的文件路徑(可以是絕對路徑或相對路徑)。
flags :類型:int
含義:指定文件打開模式和行為的標志,常見的值包括:
訪問模式 (必須選擇其中之一):
O_RDONLY:只讀模式。
O_WRONLY:只寫模式。
O_RDWR:讀寫模式。
可選標志 (可以通過按位或 | 組合使用):
O_CREAT:如果文件不存在,則創建文件。
O_EXCL:與 O_CREAT 一起使用,確保文件不存在時才創建。
O_TRUNC:如果文件存在且是普通文件,則將其長度截斷為 0。
O_APPEND:每次寫入時追加到文件末尾。
O_BINARY:以二進制模式打開文件(主要用于 Windows 系統)。
O_TEXT:以文本模式打開文件(主要用于 Windows 系統)。
O_NONBLOCK:以非阻塞模式打開文件。
mode (僅當 flags 包含 O_CREAT 時需要):類型:mode_t
含義:指定新創建文件的權限(如讀寫權限)。常見的權限值包括:
S_IRUSR:用戶可讀。
S_IWUSR:用戶可寫。
S_IXUSR:用戶可執行。
S_IRGRP:組可讀。
S_IWGRP:組可寫。
S_IROTH:其他用戶可讀。
示例:0644 表示用戶可讀寫,組和其他用戶只讀。
返回值
成功時:返回一個非負整數,表示文件描述符(file descriptor)。
失敗時:返回 -1,并設置全局變量 errno 來指示錯誤原因。
?
對于
ngx_open_file(name, NGX_FILE_APPEND,NGX_FILE_CREATE_OR_OPEN,NGX_FILE_DEFAULT_ACCESS);
NGX_FILE_APPEND?
在?/src/os/unix/ngx_files.h 中
#define NGX_FILE_APPEND (O_WRONLY|O_APPEND)
只寫模式 |?每次寫入時追加到文件末尾
NGX_FILE_CREATE_OR_OPEN
#define NGX_FILE_CREATE_OR_OPEN O_CREAT
O_CREAT
:如果文件不存在,則創建文件
NGX_FILE_DEFAULT_ACCESS
#define NGX_FILE_DEFAULT_ACCESS 0644
0644
?表示用戶可讀寫,組和其他用戶只讀