尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux open 函数 Flag 参数详解

Linux open 函数 Flag 参数详解 一、open 函数原型与核心认知int open(const char *pathname, int flags, mode_t mode);很多新手最大误区误以为 mode 是文件固定权限、flags 可以随意填写。实际内核执行逻辑非常严格两个参数分工完全不同。核心规则flags控制本次打开文件的行为、权限诉求决定程序能对文件做什么操作mode仅新建文件时生效打开已有文件时完全无效不会修改旧文件权限二、flags 参数两大核心分类flags 支持通过| 按位或叠加组合分为「访问权限标志」和「行为控制标志」两类。1. 访问权限标志三选一、必选该类标志作用向内核声明本次打开文件的操作诉求仅做权限校验绝对不会修改磁盘文件权限。O_RDONLY只读打开仅允许读取文件内容O_WRONLY只写打开仅允许修改文件内容O_RDWR读写打开同时支持读、写文件内核硬性逻辑程序申请的权限必须和磁盘文件真实权限匹配权限不足则 open 直接返回 -1 打开失败。2. 行为控制标志可选、可叠加1O_CREAT不存在则创建文件文件不存在自动创建文件此时 mode 参数、umask 掩码生效共同决定文件初始权限文件已存在O_CREAT 完全失效mode 参数直接作废不会修改原有文件的任何权限2O_TRUNC截短清空文件内容Linux 重点考点该标志不能单独使用、不能随意使用有严格生效前提目标文件必须已存在且是普通文件管道、设备文件等特殊文件行为未定义必须搭配 O_WRONLY / O_RDWR带写权限模式禁止搭配只读 O_RDONLY磁盘文件自身必须拥有写权限否则截断失败、文件打开报错功能将文件长度置 0清空所有原有内容。关键特性仅清空文件数据完全不修改文件权限。3O_APPEND文件追加模式每次执行 write 写入操作前自动将文件偏移量跳转至文件末尾实现内容追加不会覆盖原有文件数据。
返回列表