mode_t 0644是什么意思?

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

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

模式有3×3位标志:

  • (拥有)用户
    • 执行
    • 执行
  • 其他
    • 执行

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

 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表示hex表示法一样。 因此,每次在C中写入纯零时,它实际上是八进制零( 有趣的事实 )。

这也可以写成:

 -rw-r--r-- 

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

 -rwxrwxrwx 

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

这意味着:

  • 文件的所有者可以读写(6)
  • 与文件所有者在同一组中的用户可以阅读(前4个)
  • 所有用户都可以阅读(第二个4)

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