联机procps
帮助页指出,flags
files in 中的字段/proc/PID/fdinfo/
是一个八进制数,指示文件访问模式和文件状态标志。联机帮助页给出了各种标志( 、等)open
的解释,但没有相应的八进制值。这些八进制值是否在任何地方列出,或者我是否必须搜索 Linux 源代码? (如果是的话那么在哪里?)。O_APPEND
O_ASYNC
答案1
我不知道文档列出了标志常量的值,但您不需要搜索源代码甚至头文件,您可以询问编译器:
echo O_APPEND | gcc -include fcntl.h -E -
遍历所有标志open(2)
在 x86-64 Linux 上:
$ for flag in APPEND ASYNC CLOEXEC CREAT DIRECT DIRECTORY DSYNC EXCL LARGEFILE NOATIME NOCTTY NOFOLLOW NONBLOCK PATH SYNC TMPFILE TRUNC; do printf '%s: ' O_$flag; echo O_$flag | gcc -D_GNU_SOURCE -include fcntl.h -E - | tail -n 1; done
旗帜 | 价值 |
---|---|
O_APPEND |
02000 |
O_ASYNC |
020000 |
O_CLOEXEC |
02000000 |
O_CREAT |
0100 |
O_DIRECT |
040000 |
O_DIRECTORY |
0200000 |
O_DSYNC |
010000 |
O_EXCL |
0200 |
O_LARGEFILE |
0 |
O_NOATIME |
01000000 |
O_NOCTTY |
0400 |
O_NOFOLLOW |
0400000 |
O_NONBLOCK |
04000 |
O_PATH |
010000000 |
O_SYNC |
04010000 |
O_TMPFILE |
(020000000 | 0200000) |
O_TRUNC |
01000 |
(其中一些是特定于体系结构的;例如O_LARGEFILE
i386 上的 0100000。)