首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改默认mkstemp的文件权限

更改默认mkstemp的文件权限
EN

Stack Overflow用户
提问于 2014-08-12 07:39:41
回答 2查看 2.5K关注 0票数 2

我在C中调用以下代码:

代码语言:javascript
复制
 fileCreatefd = mkstemp(fileName);

我看到文件是使用权限600创建的(-rw-)。我想把这个临时文件创建为-rw-

我试着玩umask,但它只对文件权限应用了一个掩码--至少这是我的理解。那么,如何创建一个权限为666的文件呢?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-12 07:45:20

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

代码语言:javascript
复制
fileCreatefd = mkstemp(fileName);
fchmod(fileCreatefd, 0666)
票数 1
EN

Stack Overflow用户

发布于 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更改文件权限。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25258709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档