gpt4 book ai didi

php - 为什么 mkdir 模式参数以 0 开头?

转载 作者:太空狗 更新时间:2023-10-29 12:16:31 26 4
gpt4 key购买 nike

mkdir 函数的参数模式默认值为 0777

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

我见过的每个 mkdir 示例都有以 0 开头的模式参数。前导八进制数字不是表示文件类型吗?

来自 this page , 0 表示常规文件,而 3 表示目录。

因此,mkdir 中模式参数的默认值不应该是 3777 而不是 0777

关于mkdir,这两种模式有什么区别。如果我正在创建一个常规文件夹,我应该使用哪个模式值?

最佳答案

根据您询问的对象,您可能会得到一些相当困惑的信息。您使用 chmodmkdirtouch 和其他创建和修改文件权限的工具指定的模式往往只处理低阶权限位,有时还有 sticky 和 ​​set[ug]id 位。 ls -lstat 输出但很少见的模式的高阶部分包括文件类型。

最右边的九位全部被权限占用,接下来的几位与sticky、setuid、segid位有关。注意:

bin(0777)  =>    '0b111111111' # 9 bits, all read, write, exec
bin(01777) => '0b1111111111' # 10 bits, sticky + 0777
bin(02777) => '0b10111111111' # 11 bits, setgid + 0777
bin(04777) => '0b100111111111' # 12 bits, setuid + 0777

考虑到文件类型的前 12 位没有空间,所以这篇文章有点令人困惑。

您在问题中似乎很清楚这一点,但对于后代来说,前导 0 将值标识为八进制。因此,即使您想指定文件类型,您肯定也必须以 03… 之类的内容开头。

在任何情况下,mkdir 要么创建一个目录,要么什么都不创建。它不会生成文件,因此它不关心文件类型位。

关于php - 为什么 mkdir 模式参数以 0 开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22874876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com