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环境高级编程下载