我在C中调用以下代码:
fileCreatefd = mkstemp(fileName);
我看到该文件是使用权限600(-rw -------)创建的。我想将此临时文件创建为-rw-rw-rw -
我试过玩umask但是只对文件权限应用了一个掩码 - 至少这是我的理解。那么如何创建具有权限666的文件?
由于
答案 0 :(得分:1)
您无法使用mkstemp创建0666。如果对您的应用程序来说足够了,可以使用fchmod更改权限。
fileCreatefd = mkstemp(fileName);
fchmod(fileCreatefd, 0666)
答案 1 :(得分:1)
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
标志打开,保证调用者是创建文件的进程。
更一般地说,mkstemp()
的POSIX规范没有说明文件模式,因此应用程序应确保在调用{{1}之前正确设置其文件模式创建掩码(umask(2)
) }(和mkstemp()
)。
创建文件后使用mkostemp()
更改文件权限。