UNIX(编程-文件目录):03---文件权限屏蔽字函数(umask)

umask

#include <sys/stat.h>
mode_t umask(mode_t cmask);

//返回值:返回之前文件模式创建的屏蔽字
//此函数是少数不会出错的函数之一
  • 功能:如果程序创建文件,则使用此函数来限制文件的访问权限,此函数设置的常量不会被设置到创建的文件的权限中去
  • 注意事项:程序调用此函数并不会影响到系统的umask属性

cmask参数:此参数可以为下面的9个常量的按位或构成

演示案例

#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define RWRWRW (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)

int main()
{
    umask(0);
    if (creat("foo", RWRWRW) < 0) //foo文件使用默认的umask屏蔽位
        printf("creat error for foo\n");

    umask(S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
    if (creat("bar", RWRWRW) < 0) //bar文件使用上面umask使用的屏蔽位
        printf("creat error for bar\n");
    exit(0);
}
  • 运行结果

.

  • 查看一下当前用户的umask屏蔽位,可以看到程序的umask函数并不会影响到终端的umask

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/89459413
今日推荐