맨페이지 에는 파일의 필드가 파일 액세스 모드 및 파일 상태 플래그를 나타내는 8진수라고 procps
명시되어 있습니다 . 맨페이지에는 다양한 플래그( 등)에 대한 설명이 제공되지만 해당하는 8진수 값은 없습니다. 이러한 8진수 값은 어디에나 나열되어 있나요? 아니면 Linux 소스 코드를 검색해야 하나요? (그렇다면 어디에서?)flags
/proc/PID/fdinfo/
open
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 |
(이 중 일부는 i386의 0100000과 같이 아키텍처에 따라 다릅니다 O_LARGEFILE
.)