statx(2) - wariua/manpages-ko GitHub Wiki

NAME

statx - 파일 μƒνƒœ 정보 μ–»κΈ° (ν™•μž₯)

SYNOPSIS

#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);

DESCRIPTION

이 ν•¨μˆ˜λŠ” νŒŒμΌμ— λŒ€ν•œ 정보λ₯Ό 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() ν˜ΈμΆœν•˜κΈ°

파일 μƒνƒœ 정보 μ ‘κ·Ό μ‹œ κ·Έ 파일 μžμ²΄μ— λŒ€ν•΄μ„  μ–΄λ–€ κΆŒν•œλ„ ν•„μš”μΉ˜ μ•Šμ§€λ§Œ 경둜λͺ…이 μžˆλŠ” 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
파일 μ‹œμŠ€ν…œμ—μ„œ νŒŒμΌμ„ μ•”ν˜Έν™”ν•˜κΈ° μœ„ν•΄μ„  ν‚€κ°€ ν•„μš”ν•˜λ‹€.

RETURN VALUE

성곡 μ‹œ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

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κ°€ 디렉터리 μ•„λ‹Œ νŒŒμΌμ„ κ°€λ¦¬ν‚€λŠ” 파일 λ””μŠ€ν¬λ¦½ν„°μ΄λ‹€.

VERSIONS

λ¦¬λˆ…μŠ€ 컀널 4.11μ—μ„œ statx()κ°€ μΆ”κ°€λ˜μ—ˆλ‹€. glibc 2.28μ—μ„œ 라이브러리 지원이 μΆ”κ°€λ˜μ—ˆλ‹€.

CONFORMING TO

statx()λŠ” λ¦¬λˆ…μŠ€ μ „μš©μ΄λ‹€.

SEE ALSO

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

⚠️ **GitHub.com Fallback** ⚠️