当前位置:   article > 正文

linux-系统调用之umask()函数_mode_t umask(mode_t mask)

mode_t umask(mode_t mask)

函数原型:mode_t umask(mode_t mask)

mask:八进制位掩码值

return: 返回上一次的掩码值,没有失败只有成功。

如在程序工作路径创建一个“123456”的目录,期望目录只有读的权限。

  1. void createDir()
  2. {
  3. QString dir = QCoreApplication::applicationDirPath();
  4. dir += "/123456";
  5. umask(0300);
  6. mkdir(dir.toStdString().data(), 0700);
  7. }

其实就是做个减法操作,创建目录权限  - 掩码权限 = 最终需要的权限:

  1. 1 0700 - 0300 = 0400   二进制:100 000 000 (每三个是一组,代表八进制位一个数位)
  2. 2 程序中的处理过程也类似,先将掩码按位取反,然后再与设定的值按位与运算得到最终的权限:
  3. 3 掩码八进制:0 300  转为二进制:011 000 000
  4. 4 设定权限值:0 700 转为二进制:111 000 000
  5. 5 将二进制按位取反:~011 000 000 = 100 111 111
  6. 6 与设定权限值二进制做按位与:111 000 000 & 100 111 111 = 100 000 000 即八进制:0400

实现目的:

400 - 000 - 000 = r-- --- ---

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/49365?site
推荐阅读
相关标签
  

闽ICP备14008679号