当前位置: 首页 > news >正文

ngx_open_file

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

相关文章:

  • 自己做公司网站成本营销策划案的模板
  • jsp是做网站后台的吗/百度推广客户端app
  • 如何形容网站/怎样做网站
  • 做求职网站/推广联系方式
  • 青海建设厅网站特种作业/小程序开发
  • 手机访问自动跳转到wap网站的代码/长沙官网seo分析
  • 通义万相环境搭建推理测试
  • 深度学习deeplearn1
  • Linux命令-sort
  • 如何申请p12证书
  • 【Kafka基础】解析Kafka核心特性:高吞吐、持久化与高可用架构
  • 关于终端安全管理系统在社会工作中的重要作用
  • FastAPI与ASGI深度整合实战指南
  • 使用Redis构架你自己的私有大模型
  • 嘎嘎棒,ethernet ip转profinet网关锁鲜食品加工业
  • 安装electron项目是为什么要执行postinstall script
  • Dubbo(30)如何配置Dubbo的服务分片?
  • linux0.11内核源码修仙传第十三章——进程调度大战前夕
  • AIO,BIO,NIO的区别(详解)
  • 盲盒小程序:数字娱乐新宠,开发需注重细节与创新
  • React面试常考内容【从宏观到微观】
  • pyQt学习笔记——QThread线程
  • Linux——文件(2)文件系统
  • Kafka - 消息零丢失实战
  • 深度学习笔记 | 漫游RNN(循环神经网络)
  • 天梯赛 L2-024 部落