You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何std::filesystem::create_directory创建目录权限与文档不符?

问题解答

这是因为**进程的umask(权限掩码)**在起作用,它会修改实际创建文件/目录时的最终权限:

  • std::filesystem::create_directory确实会以0777(perms::all)作为权限参数调用底层的POSIX mkdir(),但POSIX标准中,mkdir()会将传入的权限值与当前进程的umask取反后的值做按位与运算,得到最终的目录权限。
  • Ubuntu 20.04默认的用户umask是002,计算过程为:0777 & ~002 = 0775,对应权限drwxrwxr-x,这就是你看到的结果。
  • 另外,/tmp目录本身的权限设置(通常是drwxrwxrwt)不会直接影响新创建目录的权限,但如果需要强制设置特定权限,可以在调用create_directory后使用std::filesystem::permissions()函数显式修改,或者先临时修改进程的umask(注意umask是进程级的,会影响后续所有文件操作)。

内容的提问来源于stack exchange,提问作者fsmoke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:50:56