fopen() 创建权限模式

Posted

技术标签:

【中文标题】fopen() 创建权限模式【英文标题】:fopen() creation permission mode 【发布时间】:2013-03-08 20:00:33 【问题描述】:

根据OpenGroup,如果使用O_CREAT调用open()并且文件不存在,则将使用函数中第三个参数指定的文件权限创建它:

应创建文件;文件的用户 ID 应设置为 进程的有效用户ID;文件的组 ID 应为 设置为文件父目录的组 ID 或有效 进程的组ID;和访问权限位(见 ) 的文件模式应设置为第三个的值 参数作为类型 mode_t

是否可以使用 fopen() 做类似的事情,以便我可以在创建新文件时设置权限,而无需在之后对其进行 chmod?

【问题讨论】:

如果您需要各种不同的权限,直接使用chmod 会更容易。否则 umask 为默认值。 【参考方案1】:

来自fopen(3) 手册页:

任何创建的文件都将具有模式 S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH (0666),由进程的 umask 值修改(参见 umask(2))。

所以umask(2) 是你的朋友。

【讨论】:

以上是关于fopen() 创建权限模式的主要内容,如果未能解决你的问题,请参考以下文章

PHP文件基础操作

VC6 fopen 模式参数

fopen 创建文件,但是如何更改权限?

无法使用模式 r 打开:fopen():AWS Elastic Beanstalk

如何将 allow_url_fopen 更改为 cURL 模式?

fseek不起作用, 当文件fopen在a模式下