c - mode_t 0644 是什么意思?

标签 c file-permissions

#define COPYMODE 0644
creat(argV[2],COPYMODE);

我在 copy.c 文件中有这两行代码。 我不知道这是什么意思。 请举例说明

最佳答案

模式有 3x3 位标志:

  • (拥有)用户
    • 阅读
    • 执行
  • 集团
    • 阅读
    • 执行
  • 其他
    • 阅读
    • 执行

所以每个三元组都很好地编码为八进制数字。

rwx oct    meaning
--- ---    -------
001 01   = execute
010 02   = write
011 03   = write & execute
100 04   = read
101 05   = read & execute
110 06   = read & write
111 07   = read & write & execute

所以 0644 是:

* (owning) User: read & write
* Group: read
* Other: read

请注意,在 C 语言中,开头的 0 表示八进制表示法,就像 0x 表示十六进制表示法一样。所以每次你在 C 中写纯零时,它实际上是一个八进制零(有趣的事实)。

也可以这样写:

-rw-r--r--

虽然完全权限,0777也可以写成:

-rwxrwxrwx

因此传递给 creat 的八进制数直接对应于(通过位模式的八进制编码)由 ls -l 显示的文件权限。

关于c - mode_t 0644 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18415904/

相关文章:

objective-c - 在 Objective-C 中包装 C API

shell - 如何使用批处理在/sdcard 上 adb chmod 750

file-permissions - Tar 提取命令,无法打开 : Permission denied

php - file_exists 似乎无法正常工作

c - 仅使用按位运算来除两个整数

c - 我不明白他想要什么

C函数的输入输出参数

在 C 中使用 strptime() 转换 "%y-%m-%d"失败

linux - pull 入 git 存储库时权限被拒绝

.net - 如何赋予程序比启动它的用户更多的权限