/proc/PID/fdinfo/N에서 8진수 플래그를 해석하는 방법

/proc/PID/fdinfo/N에서 8진수 플래그를 해석하는 방법

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

관련 정보