statx(2) - wariua/manpages-ko GitHub Wiki
statx - νμΌ μν μ 보 μ»κΈ° (νμ₯)
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h> /* AT_* μμ μ μ */
int statx(int dirfd, const char *pathname, int flags,
unsigned int mask, struct statx *statxbuf);
μ΄ ν¨μλ νμΌμ λν μ 보λ₯Ό statxbuf
κ° κ°λ¦¬ν€λ λ²νΌμ μ μ₯ν΄μ λ°ννλ€. λ°ν λ²νΌμ ꡬ쑰λ λ€μκ³Ό κ°λ€.
struct statx {
__u32 stx_mask; /* μ±μμ§ νλλ€μ λνλ΄λ
λΉνΈ λ§μ€ν¬ */
__u32 stx_blksize; /* νμΌ μμ€ν
I/Oμ λΈλ‘ ν¬κΈ° */
__u64 stx_attributes; /* μΆκ° νμΌ μμ± νμ */
__u32 stx_nlink; /* νλ λ§ν¬ μ */
__u32 stx_uid; /* μμ μμ μ¬μ©μ ID */
__u32 stx_gid; /* μμ μμ κ·Έλ£Ή ID */
__u16 stx_mode; /* νμΌ μ’
λ₯ λ° λͺ¨λ */
__u64 stx_ino; /* μμ΄λ
Έλ λ²νΈ */
__u64 stx_size; /* μ΄ ν¬κΈ°, λ°μ΄νΈ λ¨μ */
__u64 stx_blocks; /* ν λΉλ 512B λΈλ‘ μ */
__u64 stx_attributes_mask;
/* stx_attributesμ 무μμ
κΈ°λνλμ§ λνλ΄λ λ§μ€ν¬ */
/* λ€μμ νμΌ νμμ€ν¬ν νλλ€ */
struct statx_timestamp stx_atime; /* μ΅κ·Ό μ κ·Ό */
struct statx_timestamp stx_btime; /* μμ± */
struct statx_timestamp stx_ctime; /* μ΅κ·Ό μν λ³κ²½ */
struct statx_timestamp stx_mtime; /* μ΅κ·Ό μμ */
/* μ΄ νμΌμ΄ μ₯μΉλ₯Ό λνλ΄λ κ²½μ° λ€μ λ νλκ°
κ·Έ μ₯μΉμ IDλ₯Ό λ΄λλ€ */
__u32 stx_rdev_major; /* μ£Ό ID */
__u32 stx_rdev_minor; /* λΆ ID */
/* λ€μ λ νλλ νμΌμ΄ μμΉν νμΌ μμ€ν
μ΄
λ€μ΄ μλ μ₯μΉμ IDλ₯Ό λ΄λλ€ */
__u32 stx_dev_major; /* μ£Ό ID */
__u32 stx_dev_minor; /* λΆ ID */
};
νμΌ νμμ€ν¬νμ ꡬ쑰λ λ€μκ³Ό κ°λ€.
struct statx_timestamp {
__s64 tv_sec; /* μν¬ν¬ μ΄ν μ΄ (μ λμ€ μκ°) */
__u32 tv_nsec; /* tv_sec μ΄ν λλ
Έμ΄ */
};
(μ°Έκ³ λ‘ μλΉ κ³΅κ°κ³Ό ν¨λ©μ μλ΅λΌ μλ€.)
νμΌ μν μ 보 μ κ·Ό μ κ·Έ νμΌ μ체μ λν΄μ μ΄λ€ κΆνλ νμμΉ μμ§λ§ κ²½λ‘λͺ
μ΄ μλ statx()
μ κ²½μ°μλ pathname
μμ κ·Έ νμΌκΉμ§ μ΄μ΄μ§λ λλ ν°λ¦¬ λͺ¨λμ λν΄ μ€ν(νμ) κΆνμ΄ νμνλ€.
statx()
μμλ pathname
, dirfd
, flags
λ₯Ό μ¬μ©ν΄ λ€μ λ°©μ μ€ νλλ‘ λμ νμΌμ μλ³νλ€.
- μ λ κ²½λ‘λͺ
-
pathname
μ΄ μ¬λμλ‘ μμνλ©΄ λμ νμΌμ λνλ΄λ μ λ κ²½λ‘λͺ μ΄λ€. μ΄ κ²½μ°dirfd
λ 무μνλ€. - μλ κ²½λ‘λͺ
-
pathname
μ΄ μ¬λμ μλ λ¬Έμλ‘ μμνλ λ¬Έμμ΄μ΄κ³dirfd
κ°AT_FDCWD
μ΄λ©΄pathname
μ΄ μλ κ²½λ‘λͺ μ΄κ³ νλ‘μΈμ€μ νμ¬ μμ λλ ν°λ¦¬λ₯Ό κΈ°μ€μΌλ‘ ν΄μνλ€. - λλ ν°λ¦¬ κΈ°μ€ μν κ²½λ‘λͺ
-
pathname
μ΄ μ¬λμ μλ λ¬Έμλ‘ μμνλ λ¬Έμμ΄μ΄κ³dirfd
κ° λλ ν°λ¦¬λ₯Ό κ°λ¦¬ν€λ νμΌ λμ€ν¬λ¦½ν°μ΄λ©΄pathname
μ΄ μλ κ²½λ‘λͺ μ΄κ³dirfd
κ° κ°λ¦¬ν€λ λλ ν°λ¦¬λ₯Ό κΈ°μ€μΌλ‘ ν΄μνλ€. - νμΌ λμ€ν¬λ¦½ν°
-
pathname
μ΄ λΉ λ¬Έμμ΄μ΄κ³flags
μAT_EMPTY_PATH
νλκ·Έ(μλ μ°Έκ³ )κ° μ§μ λΌ μμΌλ©΄ νμΌ λμ€ν¬λ¦½ν°dirfd
κ° κ°λ¦¬ν€λ νμΌμ΄ λμ νμΌμ΄λ€.
flags
λ₯Ό μ΄μ©ν΄ κ²½λ‘λͺ
κΈ°λ° νμ λμμ μν₯μ μ€ μ μλ€. flags
κ°μ λ€μ μμλ₯Ό 0κ° μ΄μ OR ν΄μ ꡬμ±νλ€.
AT_EMPTY_PATH
-
pathname
μ΄ λΉ λ¬Έμμ΄μ΄λ©΄ (open(2)O_PATH
νλκ·Έλ‘ μ»μ κ²μΌ μλ μλ)dirfd
κ° κ°λ¦¬ν€λ νμΌμ λν΄ λμνλ€. μ΄ κ²½μ°μdirfd
λ λλ ν°λ¦¬λ§μ΄ μλλΌ μμ μ’ λ₯μ νμΌμ κ°λ¦¬ν¬ μ μλ€.dirfd
κ°AT_FDCWD
μ΄λ©΄ νμ¬ μμ λλ ν°λ¦¬μ λν΄ νΈμΆμ΄ λμνλ€.μ΄ νλκ·Έλ 리λ μ€ μ μ©μ΄λ€. μ΄ μ μλ₯Ό μ»μΌλ €λ©΄
_GNU_SOURCE
λ₯Ό μ μν΄μΌ νλ€. AT_NO_AUTOMOUNT
-
pathname
μ λ§μ§λ§ μμ("basename")κ° μλ λ§μ΄νΈ μ§μ μΈ λλ ν°λ¦¬μΈ κ²½μ°μ μλ λ§μ΄νΈλ₯Ό νμ§ μλλ€. μ΄λ₯Ό ν΅ν΄ (λ§μ΄νΈ λ μμΉκ° μλλΌ) μλ λ§μ΄νΈ μ§μ μ μμ±λ€μ νΈμΆμκ° μ»μ μ μλ€. λλ ν°λ¦¬λ€μ νλ λꡬλ€μμ μ΄ νλκ·Έλ₯Ό μ¬μ©ν΄μ μλ λ§μ΄νΈ μ§μ μΈ λλ ν°λ¦¬λ₯Ό μλ© μλ λ§μ΄νΈ νλ κ±Έ λ°©μ§ν μ μλ€. λ§μ΄νΈ μ§μ μ μ΄λ―Έ λ§μ΄νΈκ° λμΌλ©΄AT_NO_AUTOMOUNT
νλκ·Έμ μ무 ν¨λ ₯μ΄ μλ€. μ΄ νλκ·Έλ 리λ μ€ μ μ©μ΄λ€. μ΄ μ μλ₯Ό μ»μΌλ €λ©΄_GNU_SOURCE
λ₯Ό μ μν΄μΌ νλ€. AT_SYMLINK_NOFOLLOW
-
pathname
μ΄ μ¬λ³Όλ¦ λ§ν¬μΈ κ²½μ° μμ°Έμ‘°λ₯Ό νμ§ μλλ€. λμlstat()
μ²λΌ λ§ν¬ μ체μ λν μ 보λ₯Ό λ°ννλ€.
λν flags
λ₯Ό μ΄μ©ν΄ μ격 νμΌ μμ€ν
μ νμΌμ μ§μν λ 컀λμμ νκ² λλ λκΈ°ν λ°©μμ μ μ΄ν μ μλ€. λ€μ κ°λ€ μ€ νλλ₯Ό OR νλ€.
AT_STATX_SYNC_AS_STAT
- stat(2)κ³Ό λκ°μ΄ νλ€. κΈ°λ³Έ λ°©μμ΄λ©° νμΌ μμ€ν μ λ°λΌ λ¬λΌμ§λ€.
AT_STATX_FORCE_SYNC
- μμ±λ€μ΄ μλ²μ λκΈ°νλλλ‘ νλ€. μ΄λ₯Ό μν΄ λ€νΈμν¬ νμΌ μμ€ν μμ νμμ€ν¬νλ₯Ό μ¬λ°λ‘ μ²λ¦¬νκΈ° μν΄ λ°μ΄ν° μ μ‘μ μνν΄μΌ ν μλ μλ€.
AT_STATX_DONT_SYNC
- μ무κ²λ λκΈ°ννμ§ λ§κ³ κ°λ₯νλ©΄ μμ€ν μ μΊμλ κ±Έ μ¨λ¨Ήλλ€. λ°νλλ μ λ³΄κ° κ·Όμ¬μΉλΌλ μλ―ΈμΌ μλ μμ§λ§ λ€νΈμν¬ νμΌ μμ€ν μμλ (μ‘μ 리μ€κ° μλ κ²½μ°μλ) μλ²λ‘μ μλ³΅μ΄ νμμΉ μμ μλ μλ€.
statx()
μ mask
μΈμλ₯Ό μ΄μ©ν΄ νΈμΆμκ° κ΄μ¬ μλ νλκ° λμ§ μ»€λμκ² μλ € μ€ μ μλ€. mask
λ λ€μ μμλ€μ ORλ‘ μ‘°ν©ν κ²μ΄λ€.
STATX_TYPE |
stx_mode & S_IFMT μν¨ |
STATX_MODE |
stx_mode & ~S_IFMT μν¨ |
STATX_NLINK |
stx_nlink μν¨ |
STATX_UID |
stx_uid μν¨ |
STATX_GID |
stx_gid μν¨ |
STATX_ATIME |
stx_atime μν¨ |
STATX_MTIME |
stx_mtime μν¨ |
STATX_CTIME |
stx_ctime μν¨ |
STATX_INO |
stx_ino μν¨ |
STATX_SIZE |
stx_size μν¨ |
STATX_BLOCKS |
stx_blocks μν¨ |
STATX_BASIC_STATS |
[μ νλλ€ λͺ¨λ] |
STATX_BTIME |
stx_btime μν¨ |
STATX_ALL |
[νμ¬ κ°μ© νλλ€ λͺ¨λ] |
μ°Έκ³ λ‘ mask
μ μμ λ€λ₯Έ κ°μ΄ μμ΄λ 컀λμ΄ κ±°λΆνμ§ μλλ€. λμ statx.stx_mask
νλλ₯Ό ν΅ν΄ 컀λκ³Ό νμΌ μμ€ν
μμ μ§μνλ κ°λ€μ νΈμΆμμκ² μλ €μ€λ€. λ°λΌμ mask
λ₯Ό κ·Έλ₯ UINT_MAX
λ‘ μ€μ (λͺ¨λ λΉνΈ μ€μ )ν΄μ μ λλ€. μ΄λ€ λΉνΈκ° ν₯νμ λ²νΌμ λν νμ₯μ λνλ΄λ λ° μ°μΌ μλ μκΈ° λλ¬Έμ΄λ€.
statxbuf
κ° κ°λ¦¬ν€λ statx
κ΅¬μ‘°μ²΄λ‘ λμ νμΌμ μν μ λ³΄κ° λ°νλλ€. κ·Έ ꡬ쑰체μ stx_mask
κ° μμ΄μ μ΄λ€ μ 보λ€μ΄ λ°νλλμ§ λνλΈλ€. stx_mask
μ νμμ mask
μΈμμ κ°μΌλ©° κ±°κΈ° μ€μ λ λΉνΈλ€μ΄ μ΄λ€ νλκ° μ±μμ‘λμ§λ₯Ό λνλΈλ€.
κΈ°λ° νμΌ μμ€ν
μ μ§μμ λ°λΌμ μμ²νμ§ μμ νλλ₯Ό 컀λμ΄ λ°νν μλ μκ³ μμ²ν νλλ₯Ό λ°ννμ§ λͺ»ν μλ μμμ μ μν΄μΌ νλ€. (μ§μνμ§ μμλλ° κ°μ λ°μ νλλ κ·Έλ₯ 무μνλ©΄ λλ€.) μ΄λ κ²½μ°λ stx_mask
κ° mask
μ λ€λ₯΄κ² λλ€.
νμΌ μμ€ν
μμ μ΄λ€ νλλ₯Ό μ§μνμ§ μκ±°λ κ·Έ κ°μ΄ νν λΆκ°λ₯ν (μλ₯Ό λ€μ΄ νΉμ΄ν νμ
μ νμΌ) κ²½μ°μλ μ¬μ©μκ° μμ²νλλΌλ stx_mask
μμ κ·Έ νλμ λμνλ λ§μ€ν¬ λΉνΈκ° λΉμμ§κ² λλ©° κ°λ₯ν κ²½μ°μλ νΈνμ μν΄ λλ―Έ κ°μ μ±μ΄λ€. (κ°λ Ή μ΄λ€ κ²½μ°μ λ§μ΄νΈλ₯Ό μν΄ λλ―Έ UID λ° GIDλ₯Ό μ§μ νμ μ μλ€.)
νΈμΆμκ° μμ²νμ§ μμλλΌλ μΆκ° λΉμ© μμ΄ κ°μ μ»μ μ μλ κ²½μ°μλ νμΌ μμ€ν
μμ νλλ₯Ό μ±μΈ μλ μλ€. μ΄ κ²½μ° stx_mask
μμ λμνλ λΉνΈκ° μ€μ λλ€.
μ£Όμ: μ±λ₯κ³Ό λ¨μμ±μ μν΄ statx
ꡬ쑰체μ νλλ€μ΄ μμ€ν
νΈμΆ μ€ν μ€μ μμ΄ν μμ μ μν μ 보λ₯Ό λ΄μ μ μλ€. μλ₯Ό λ€μ΄ λ€λ₯Έ νλ‘μΈμ€μμ chmod(2)λ chown(2)μ νΈμΆν΄μ stx_mode
λ stx_uid
λ₯Ό λ°κΎΈλ κ²½μ°μ statx()
κ° μ΄μ stx_mode
μ μ stx_uid
λ₯Ό λ°νν μλ μκ³ μ΄μ stx_uid
μ μ stx_mode
λ₯Ό λ°νν μλ μλ€.
(μμ μ€λͺ
ν) stx_mask
λ₯Ό λΉΌκ³ statx
ꡬ쑰체μ νλλ€μ λ€μκ³Ό κ°λ€.
stx_blksize
- ν¨μ¨μ μΈ νμΌ μμ€ν I/Oλ₯Ό μν "μ νΈ" λΈλ‘ ν¬κΈ°.
stx_attributes
- νμΌμ λν μΆκ° μν μ 보. (μμΈν λ΄μ©μ μλ μ°Έκ³ .)
stx_nlink
- νμΌμ λν νλ λ§ν¬ μ.
stx_uid
- μ΄ νλλ νμΌ μμ μμ μ¬μ©μ IDλ₯Ό λ΄λλ€.
stx_gid
- μ΄ νλλ νμΌ κ·Έλ£Ή μμ μμ IDλ₯Ό λ΄λλ€.
stx_mode
- νμΌ μ’ λ₯μ λͺ¨λ. μμΈν λ΄μ©μ inode(7) μ°Έκ³ .
stx_ino
- νμΌμ μμ΄λ Έλ λ²νΈ.
stx_size
- (μ κ· νμΌμ΄λ μ¬λ³Όλ¦ λ§ν¬μΈ κ²½μ°) λ°μ΄νΈ λ¨μ νμΌ ν¬κΈ°. μ¬λ³Όλ¦ λ§ν¬μ ν¬κΈ°λ λ΄κ³ μλ (μ’ λ£ λ λ°μ΄νΈ μλ) κ²½λ‘λͺ μ κΈΈμ΄λ€.
stx_blocks
- 맀체 μμμ νμΌμ ν λΉλ 512λ°μ΄νΈ λ¨μ λΈλ‘ μ. (νμΌμ ꡬλ©μ΄ μμ λλ
stx_size
/512λ³΄λ€ μμ μλ μλ€.) stx_attributes_mask
-
stx_attributes
μ μ΄λ€ λΉνΈλ€μ VFSμ νμΌ μμ€ν μμ μ§μνλμ§ λνλ΄λ λ§μ€ν¬. stx_atime
- νμΌμ μ΅κ·Ό μ κ·Ό νμμ€ν¬ν.
stx_btime
- νμΌμ μμ± νμμ€ν¬ν.
stx_ctime
- νμΌμ μ΅κ·Ό μν λ³κ²½ νμμ€ν¬ν.
stx_mtime
- νμΌμ μ΅κ·Ό μμ νμμ€ν¬ν.
-
stx_dev_major
λ°stx_dev_minor
- μ΄ νμΌμ΄ (μμ΄λ Έλκ°) μμΉν μ₯μΉ.
-
stx_rdev_major
λ°stx_rdev_minor
- νμΌ μ’ λ₯κ° λΈλ‘ μ₯μΉλ λ¬Έμ μ₯μΉμΈ κ²½μ° μ΄ νμΌμ΄ (μμ΄λ Έλκ°) λνλ΄λ μ₯μΉ.
μ νλλ€μ λν λ μμΈν λ΄μ©μ inode(7)λ₯Ό 보λΌ.
stx_attributes
νλλ νμΌμ μΆκ° μμ±μ λνλ΄λ νλκ·Έλ€μ OR μ§ν©μ λ΄λλ€. μ°Έκ³ λ‘ stx_attributes_mask
μ μ§μλλ κ±Έλ‘ νμλΌ μμ§ μμ μμ±μ μ¬κΈ° νλκ·Έλ₯Ό μ¬μ©ν μ μλ€. stx_attributes_mask
μ λΉνΈλ€μ stx_attributes
μ λΉνΈ λ λΉνΈλ‘ λμνλ€.
νλκ·Έλ€μ λ€μκ³Ό κ°λ€.
STATX_ATTR_COMPRESSED
- νμΌ μμ€ν μμ νμΌμ μμΆνμΌλ©° μ κ·Όμ μμμ΄ μΆκ°λ‘ νμν μ μλ€.
STATX_ATTR_IMMUTABLE
- νμΌμ μμ ν μ μλ€. μ¦ μμ νκ±°λ μ΄λ¦μ λ°κΏ μ μκ³ , μ΄ νμΌμ λν νλ λ§ν¬λ₯Ό λ§λ€ μ μκ³ , νμΌμ λ°μ΄ν°λ₯Ό κΈ°λ‘ν μ μλ€. chattr(1) μ°Έκ³ .
STATX_ATTR_APPEND
- νμΌμ λ§λΆμ΄κΈ° λͺ¨λλ‘ μ°κΈ°μ©μΌλ‘λ§ μ΄ μ μλ€. μμ μ κ·Ό μ°κΈ°κ° νμ©λμ§ μλλ€. chattr(1) μ°Έκ³ .
STATX_ATTR_NODUMP
-
dump(8)
κ°μ λ°±μ νλ‘κ·Έλ¨μ΄ λ λ νμΌμ΄ λ°±μ λμμ΄ μλλ€. chattr(1) μ°Έκ³ . STATX_ATTR_ENCRYPTED
- νμΌ μμ€ν μμ νμΌμ μνΈννκΈ° μν΄μ ν€κ° νμνλ€.
μ±κ³΅ μ 0μ λ°ννλ€. μ€λ₯ μ -1μ λ°ννλ©° errno
λ₯Ό μ μ ν μ€μ νλ€.
EACCES
-
pathname
μ κ²½λ‘ μ λλΆμ ν λλ ν°λ¦¬μ λν΄ νμ κΆνμ΄ κ±°λΆλμλ€. (path_resolution(7) μ°Έκ³ .) EBADF
-
dirfd
κ° μ ν¨ν μ΄λ¦° νμΌ λμ€ν¬λ¦½ν°κ° μλλ€. EFAULT
-
pathname
μ΄λstatxbuf
κ° NULLμ΄κ±°λ νλ‘μΈμ€μ μ κ·Ό κ°λ₯ μ£Όμ κ³΅κ° λ°μ μμΉλ₯Ό κ°λ¦¬ν€κ³ μλ€. EINVAL
-
flags
μ μ ν¨νμ§ μμ νλκ·Έλ₯Ό μ§μ νλ€. EINVAL
-
mask
μ μλΉ νλκ·Έλ₯Ό μ§μ νλ€. ELOOP
- κ²½λ‘λͺ μ μννλ λμ λ무 λ§μ μ¬λ³Όλ¦ λ§ν¬λ₯Ό λ§λ¬λ€.
ENAMETOOLONG
-
pathname
μ΄ λ무 κΈΈλ€. ENOENT
-
pathname
μ μ΄λ μμκ° μ‘΄μ¬νμ§ μκ±°λ,pathname
μ΄ λΉ λ¬Έμμ΄μΈλ°flags
μAT_EMPTY_PATH
λ₯Ό μ§μ νμ§ μμλ€. ENOMEM
- λ©λͺ¨λ¦¬ (μ¦ μ»€λ λ©λͺ¨λ¦¬) λΆμ‘±.
ENOTDIR
-
pathname
μ κ²½λ‘ μ λλΆμ μ΄λ μμκ° λλ ν°λ¦¬κ° μλκ±°λ,pathname
μ΄ μλ κ²½λ‘μΈλ°dirfd
κ° λλ ν°λ¦¬ μλ νμΌμ κ°λ¦¬ν€λ νμΌ λμ€ν¬λ¦½ν°μ΄λ€.
리λ
μ€ μ»€λ 4.11μμ statx()
κ° μΆκ°λμλ€. glibc 2.28μμ λΌμ΄λΈλ¬λ¦¬ μ§μμ΄ μΆκ°λμλ€.
statx()
λ 리λ
μ€ μ μ©μ΄λ€.
ls(1)
, stat(1)
, access(2), chmod(2), chown(2), readlink(2), stat(2), utime(2), capabilities(7), inode(7), symlink(7)
2019-03-06