趣文网 > 作文大全

C语言open()和creat()函数创建文件时 文件权限相关设置

2020-12-02 16:25:02
相关推荐

open()和creat()创建文件时,文件权限说明

首先了解一下 umask 命令,该命令用来设置限制新文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。简单地来说,umask和open()及creat()函数的权限码(mode_t mode参数)共同决定你的新建文件的权限。具体关系为mode & ~umask。

下面通过简单的程序来验证它们之间的关系。

Linux C

由于open()和creat()创建文件,结果一致,我们直接采用creat()函数:

编译和运行

我们可以看到实际创建的 file.txt文件权限为 -rwx r-x r-x,并且当前系统的 umask 值为 0022 。我们创建文件时,希望创建的文件权限为 0777 ,也就是-rwx rwx rwx。我们现在来验证一下是否满足mode & ~umask。 ~umask即为umask 取反值为 1755 我们创建文件的 mode 值为 0777 mode & ~umask 为 0755,也就是-rwx r-x r-x,与实际创建的文件权限一致。

看到这你应该知道怎么一回事了,但是如果我们的程序运行在ARM开发板上时,有时会出现umask值同样为0022,mode值同样为0777,当创建出的文件权限始终为-rw- - - - - - -,无论我们如何修改umask值和mode值,创建出的文件权限始终不变,如果遇到这种情况,我们需要使用umask()函数,即可解决这个问题。

使用umask()函数

编译运行结果为

从运行结果来看,代码中使用umask()函数,并不会改变系统的umask值,只会临时改变umask值。所以个人建议,我们使用open()和creat()时,在代码上方加上一句umask(0000);,这样我们在使用open()和creat()时,就不需要特别计算mode值了。

阅读剩余内容
网友评论
相关内容
延伸阅读
小编推荐

大家都在看

苏轼传记600字作文 痕迹为题的作文 三年级作文雷锋的故事 200个字作文 关于顺其自然的作文 关于心态的作文素材 虚荣心作文 高中不会写作文怎么办 关于甜蜜的作文 风景的作文100字 喜欢的风景作文 惩罚丫鬟作文 用对比的手法写作文 关于演讲稿的作文 我们的班集体作文500字 社区作文 自驾游英语作文 美丽的田野作文 旅行作文结尾 关于消防安全的作文400字 关于母爱的作文事例 冬天的早晨作文500字 作文同学之间 拼搏作文800字议论文 写期末考试的作文 难忘的暑假200字作文 碎暖作文 想象作文写作技巧 秋天作文提纲 启迪作文500字