我在 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更改文件权限。