赞
踩
函数原型:mode_t umask(mode_t mask)
mask:八进制位掩码值
return: 返回上一次的掩码值,没有失败只有成功。
如在程序工作路径创建一个“123456”的目录,期望目录只有读的权限。
- void createDir()
- {
- QString dir = QCoreApplication::applicationDirPath();
- dir += "/123456";
- umask(0300);
- mkdir(dir.toStdString().data(), 0700);
- }
![]()
其实就是做个减法操作,创建目录权限 - 掩码权限 = 最终需要的权限:
- 1 0700 - 0300 = 0400 二进制:100 000 000 (每三个是一组,代表八进制位一个数位)
-
- 2 程序中的处理过程也类似,先将掩码按位取反,然后再与设定的值按位与运算得到最终的权限:
-
- 3 掩码八进制:0 300 转为二进制:011 000 000
-
- 4 设定权限值:0 700 转为二进制:111 000 000
-
- 5 将二进制按位取反:~011 000 000 = 100 111 111
-
- 6 与设定权限值二进制做按位与:111 000 000 & 100 111 111 = 100 000 000 即八进制:0400
实现目的:
400 - 000 - 000 = r-- --- ---
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。