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

我在 copy.c 文件中有这两行代码。我不知道这意味着什么。请举一些例子

4

2 回答 2

55

一种模式有 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

于 2013-08-24T07:00:50.680 回答
14

代表着:

  • 文件的所有者可以读写 (6)
  • 与文件所有者同组的用户可以读取(前 4 个)
  • 所有用户都可以阅读(秒 4)

请参阅http://www.ss64.com/bash/chmod.html

于 2013-08-24T06:58:53.680 回答