我在C中调用以下代码:
fileCreatefd = mkstemp(fileName);我看到文件是使用权限600创建的(-rw-)。我想把这个临时文件创建为-rw-
我试着玩umask,但它只对文件权限应用了一个掩码--至少这是我的理解。那么,如何创建一个权限为666的文件呢?
谢谢
发布于 2014-08-12 07:45:20
您不能使用mkstemp创建它0666。如果这对您的应用程序来说已经足够了,您可以使用fchmod在之后更改权限。
fileCreatefd = mkstemp(fileName);
fchmod(fileCreatefd, 0666)发布于 2014-08-12 07:46:42
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规范没有提到任何文件模式,因此应用程序应该确保在调用mkstemp() (和mkostemp())之前适当地设置了它的文件模式创建掩码(umask(2))。
因此,在创建文件之后,使用fchmod更改文件权限。
https://stackoverflow.com/questions/25258709
复制相似问题