2

我在 C 中调用以下代码:

 fileCreatefd = mkstemp(fileName);

我看到该文件是使用权限 600 (-rw--------) 创建的。我想将此临时文件创建为 -rw-rw-rw-

我尝试使用 umask,但这只对文件权限应用了掩码——至少这是我的理解。那么如何创建权限为 666 的文件呢?

谢谢

4

2 回答 2

1

您不能使用 mkstemp 创建它 0666。如果这对您的应用程序来说足够的话,您可以在之后使用 fchmod 更改权限。

fileCreatefd = mkstemp(fileName);
fchmod(fileCreatefd, 0666)
于 2014-08-12T07:45:20.540 回答
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,保证调用者是创建文件的进程。

更一般地说,POSIX 规范mkstemp()没有说明文件模式,因此应用程序应确保umask(2)在调用mkstemp()(and ) 之前正确设置其文件模式创建掩码 ( mkostemp())。

所以在创建文件后使用fchmod更改文件权限。

于 2014-08-12T07:46:42.400 回答