打开功能中模式位的含义是什么?
What is meaning of mode bits in open function?
在这个 header /usr/src/linux-headers-5.0.0-38/include/uapi/asm-generic/fcntl.h
中,我发现了以下定义:
#define O_ACCMODE 00000003
#define O_RDONLY 00000000
#define O_WRONLY 00000001
#define O_RDWR 00000002
#ifndef O_CREAT
#define O_CREAT 00000100 /* not fcntl */
...
opening mode
和setting flag
有什么区别?模式是 O_*
和标志 S_*
,但在 open(2) 方法中两者都可以是 write/read-only。
O_ACCMODE 00000003
是什么数字系统,是八进制吗?所以可以取值在0-7
之间?那么最大数是77777777
? (我是初学者)
- 最后一个 - 我可以在文件的特定访问中自定义 flags/mode 吗?第一个标志
O_ACCMODE
不在 open(2) 的文档中(为什么),这是否意味着我不能在该方法中使用它?
提前致谢。
What are difference between opening mode and setting flag? Mode is O_*
and flag S_*
, but both can be write/read-only in open(2) method.
联机帮助页对此进行了解释:O_*
常量进入 flags
参数(有一些限制),S_*
常量进入 mode
参数(仅用于某些情况下,例如传递 O_CREAT
等时)。
在尝试理解内核或 libc 代码之前,最好研究手册页和不同的标准。
What kind of numeric system is O_ACCMODE 00000003
, is it octal?, so it can have values between 0-7?, then maximum number is 77777777
?
是的,以 0
开头后跟一个数字的数字是八进制的。这是由 C 标准定义的。
在 C 语言中,最大整数是 INT_MAX
。虽然在使用 open
时不需要那个。
can I make my custom flags/mode in specific access of files?
不,你不应该定制。
The first flag O_ACCMODE
is not in documentation in open(2) (why), does that mean, I cannot use it in that method?
该标志由 POSIX 定义,是检索访问模式的掩码。你不应该将它传递给 open
,所以它没有记录在那里。
在这个 header /usr/src/linux-headers-5.0.0-38/include/uapi/asm-generic/fcntl.h
中,我发现了以下定义:
#define O_ACCMODE 00000003
#define O_RDONLY 00000000
#define O_WRONLY 00000001
#define O_RDWR 00000002
#ifndef O_CREAT
#define O_CREAT 00000100 /* not fcntl */
...
opening mode
和setting flag
有什么区别?模式是O_*
和标志S_*
,但在 open(2) 方法中两者都可以是 write/read-only。O_ACCMODE 00000003
是什么数字系统,是八进制吗?所以可以取值在0-7
之间?那么最大数是77777777
? (我是初学者)- 最后一个 - 我可以在文件的特定访问中自定义 flags/mode 吗?第一个标志
O_ACCMODE
不在 open(2) 的文档中(为什么),这是否意味着我不能在该方法中使用它?
提前致谢。
What are difference between opening mode and setting flag? Mode is
O_*
and flagS_*
, but both can be write/read-only in open(2) method.
联机帮助页对此进行了解释:O_*
常量进入 flags
参数(有一些限制),S_*
常量进入 mode
参数(仅用于某些情况下,例如传递 O_CREAT
等时)。
在尝试理解内核或 libc 代码之前,最好研究手册页和不同的标准。
What kind of numeric system is
O_ACCMODE 00000003
, is it octal?, so it can have values between 0-7?, then maximum number is77777777
?
是的,以 0
开头后跟一个数字的数字是八进制的。这是由 C 标准定义的。
在 C 语言中,最大整数是 INT_MAX
。虽然在使用 open
时不需要那个。
can I make my custom flags/mode in specific access of files?
不,你不应该定制。
The first flag
O_ACCMODE
is not in documentation in open(2) (why), does that mean, I cannot use it in that method?
该标志由 POSIX 定义,是检索访问模式的掩码。你不应该将它传递给 open
,所以它没有记录在那里。