说明以读写权力打开file这个文件,如果没有就创建
这里文件所有者是读写权益,文件所属者是读权益
flags
- 这是一个整数参数,用于指定打开文件的方式和选项。在
open(filename, O_RDWR, 0644)
中,O_RDWR
是一个预定义的宏,其值为文件以读写模式打开。 - 常见的
flags
选项还有:O_RDONLY
:以只读模式打开文件。O_WRONLY
:以只写模式打开文件。O_CREAT
:如果文件不存在,则创建该文件。O_TRUNC
:如果文件已经存在,并且以写模式打开,则将文件长度截断为零。O_APPEND
:以追加模式打开文件,每次写入数据时都会追加到文件末尾。
0644精讲
八进制表示与权限对应关系
文件权限通过三个八进制数字来表示,每个数字对应不同的用户组,分别是文件所有者(user)、文件所属组(group)和其他用户(others)。每个八进制数字的取值范围是 0 - 7,它代表了一组特定的权限组合,这组权限由读(read,简写为 r
)、写(write,简写为 w
)和执行(execute,简写为 x
)三种基本权限组合而成。
这三种基本权限对应的二进制和八进制表示如下:
- 读权限(r):二进制表示为
100
,对应的八进制值是4
。 - 写权限(w):二进制表示为
010
,对应的八进制值是2
。 - 执行权限(x):二进制表示为
001
,对应的八进制值是1
。 - 无权限:二进制表示为
000
,对应的八进制值是0
。
0644
各部分含义
1. 八进制数的第一个数字 0
在现代的文件权限设置中,这个前导的 0
用于明确表示后面跟着的是一个八进制数。在早期的 Unix 系统中,这个位置可能用于设置特殊权限,如设置用户 ID(SUID)、设置组 ID(SGID)和粘滞位(Sticky Bit),但在一般的权限设置中,通常用 0
表示不设置这些特殊权限。
2. 八进制数的第二个数字 6
这一位代表文件所有者的权限。将 6
转换为二进制是 110
,它是由读权限(r
,二进制 100
)和写权限(w
,二进制 010
)组合而成的。这意味着文件的所有者对该文件具有读和写的权限,但没有执行权限。也就是说,文件所有者可以查看文件内容,也可以修改文件内容,但不能直接执行该文件(如果是可执行文件,需要额外添加执行权限)。
3. 八进制数的第三个数字 4
这一位代表文件所属组的权限。4
转换为二进制是 100
,只对应读权限(r
)。这表明文件所属组的成员只能查看文件内容,不能对文件进行修改,也不能执行该文件。
4. 八进制数的第四个数字 4
这一位代表其他用户的权限。同样,4
转换为二进制是 100
,表示其他用户也只有读权限,即他们可以查看文件内容,但不能修改或执行该文件。