我在 C 中调用以下代码:
fileCreatefd = mkstemp(fileName);
我看到该文件是使用权限 600 (-rw--------) 创建的。我想将此临时文件创建为 -rw-rw-rw-
我尝试使用 umask,但这只对文件权限应用了掩码——至少这是我的理解。那么如何创建权限为 666 的文件呢?
谢谢
我在 C 中调用以下代码:
fileCreatefd = mkstemp(fileName);
我看到该文件是使用权限 600 (-rw--------) 创建的。我想将此临时文件创建为 -rw-rw-rw-
我尝试使用 umask,但这只对文件权限应用了掩码——至少这是我的理解。那么如何创建权限为 666 的文件呢?
谢谢
您不能使用 mkstemp 创建它 0666。如果这对您的应用程序来说足够的话,您可以在之后使用 fchmod 更改权限。
fileCreatefd = mkstemp(fileName);
fchmod(fileCreatefd, 0666)
该mkstemp()
函数从模板生成唯一的临时文件名,创建并打开文件,并返回文件的打开文件描述符。
模板的最后六个字符必须是“XXXXXX”,并替换为使文件名唯一的字符串。由于会被修改,模板不能是字符串常量,而应该声明为字符数组。
该文件是使用权限创建的0600
,即仅为所有者读写。( In glibc versions 2.06 and earlier, the file is created with permissions 0666, that is, read and writefor all users
.) 返回的文件描述符提供对文件的读写访问。使用标志打开文件open(2)
O_EXCL
,保证调用者是创建文件的进程。
更一般地说,POSIX 规范mkstemp()
没有说明文件模式,因此应用程序应确保umask(2)
在调用mkstemp()
(and ) 之前正确设置其文件模式创建掩码 ( mkostemp()
)。
所以在创建文件后使用fchmod
更改文件权限。