int current_umask(void)用于返回当前文件的权限值的掩码.
其源码分析如下:
int current_umask(void)
{
return current->fs->umask;
}
可见这里就直接返回文件的掩码
其使用的例程如下:
int v9fs_acl_mode(struct inode *dir, umode_t *modep,
struct posix_acl **dpacl, struct posix_acl **pacl)
{
int retval = 0;
umode_t mode = *modep;
struct posix_acl *acl = NULL;
if (!S_ISLNK(mode)) {
acl = v9fs_get_cached_acl(dir, ACL_TYPE_DEFAULT);
if (IS_ERR(acl))
return PTR_ERR(acl);
if (!acl)
#清零某个权限位
mode &= ~current_umask();
}
#根据权限位判断是否是一个目录文件#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
if (S_ISDIR(mode))
*dpacl = posix_acl_dup(acl);
}
常用的文件权限为如下:
#define S_IRGRP 00040//可读
#define S_IWGRP 00020//可写
#define S_IXGRP 00010//可执行