定义在 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
表示用户可读写,组和其他用户只读