4.8 umask函数
至此我们已说明了与每个文件相关联的9个存取许可权位,在此基础上我们可以说明与每个进程相关联的文件方式创建屏蔽字。umask函数为进程设置文件方式创建屏蔽字,并返回以前的值。(这是少数几个没有出错返回的函数中的一个。)
#include <sys types.h="">
#include <sys stat.h="">
mode_t umask(mode_t cmask);
</sys></sys>
返回:以前的文件方式创建屏蔽字
参数cmask由表4-4中的9个常数(S_IRUSR, S_IWUSR等)逐位“或”构成的。在进程创建一个新文件或新目录时,就一定会使用文件方式创建屏蔽字(回忆3.3和3.4节,在那里我们说明了open和creat函数。这两个函数都有一个参数mode,它指定了新文件的存取许可权位)。我们将在4.20节说明如何创建一个新目录,在文件方式创建屏蔽字中为1的位,在文件mode中的相应位则一定被转成0。
实例程序4-3创建了两个文件,创建第一个时,umask值为0,创建第二个时,umask值禁止所有组和其他存取许可权。若运行此程序可得如下结果,从中可见存取许可权是如何设置的。
$ umask
第一次打印当前文件方式创建屏蔽字
02
$ a.out4
ls -1 foo bar
-rw---- 1 stevens 0 Nov 16:23 bar
-rw- 1 stevens 0 Nov 16:23 foo
$ umask
观察文件方式创建屏蔽字是否更改
02
想要进一步了解umask命令的使用,可以访问umask命令设定权限掩码。而关于UNIX环境高级编程的更多函数原型,请查看unix环境高级编程函数原型.pdf。
程序4-3 umask函数实例62 UNIX环境高级编程下载
暂无评论