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 。