stat

ëªì¹
     stat, lstat, fstat — file statusì ì·¨ë

íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬
     Standard C Library (libc, -lc)

ìì
     <sys/types.h> <sys/stat.h> int stat(const char *path, struct stat *sb)
     int lstat(const char *path, struct stat *sb) int fstat(int fd, struct
     stat *sb)

í´ì¤
     stat() í¨ìë, path íì§ë§ ê°ë¦¬í¤ë íì¼ì ì 보를 ì·¨ëí©ëë¤.  ì§ì í íì¼ì
     ì½ê¸°ê¶, 기ë¡ê¶, ì¤íê¶ì íì ììµëë¤.  ê·¸ë¬ë, ê·¸ íì¼ì ëë¬íë í¨ì¤ëªì¼ë¡
     ì´ê±°ë ëª¨ë  ëë í 리ë, ê²ì ê°ë¥íë¤ë¼ê³  íë ê²ì´ íìí©ëë¤.

     lstat() í stat() (ì)를 ë®ì ììµëë¤ë§, ì§ì í íì¼ì´ ê¸°í¸ ì°ê²°ì¸ ê²½ì°ë
     ë¤ë¦ëë¤.  lstat() (ì)ë ë§í¬ì ì 보를 ëë립ëë¤ë§, stat() (ì)ë ë§í¬ê°
     참조íë íì¼ì ì 보를 ëë ¤ì¤ëë¤.

     fstat() (ì)ë, íì¼ ê¸°ì ì fd ê·¸ë¦¬ê³  구ë³ëë ì¤í íì¼ì ëí´, ìì ê°ì
     ì 보를 ì·¨ëí©ëë¤.

     ì¸ì sb (ì)ë, 구조체 stat() ìì í¬ì¸í°ìëë¤. ì´ê²ì, ⟨sys/stat.h⟩ (ìëì
     ê°ì´ 참조)(ì¼)ë¡ ì ìëì´ íì¼ì ê´í ì 보를 ë³´ê´ ì ì§í©ëë¤.

     struct stat {
         dev_t     st_dev;           /* inode ì ëë°ì´ì¤ */
         ino_t     st_ino;           /* inode ë²í¸ */
         mode_t    st_mode;          /* inode ë³´í¸ ëª¨ë */
         nlink_t   st_nlink;         /* íë ë§í¬ì */
         uid_t     st_uid;           /* íì¼ ìì ìì ì ì  ID */
         gid_t     st_gid;           /* íì¼ ê·¸ë£¹ì 그룹 ID */
         dev_t     st_rdev;          /* ëë°ì´ì¤ íì */
     #ifndef _POSIX_SOURCE
         struct timespec st_atimespec; /* ë§ì§ë§ ì¡ì¸ì¤ ìê° */
         struct timespec st_mtimespec; /* ë§ì§ë§ ë°ì´í° ìì  ìê° */
         struct timespec st_ctimespec; /* ë§ì§ë§ file status ìì  ìê° */
     #else
         time_t    st_atime;         /* ë§ì§ë§ ì¡ì¸ì¤ ìê° */
         long      st_atimensec;     /* ë§ì§ë§ ì¡ì¸ì¤ ìê°ì ëë¸ì´ */
         time_t    st_mtime;         /* ë§ì§ë§ ë°ì´í° ìì  ìê° */
         long      st_mtimensec;     /* ë§ì§ë§ ë°ì´í° ìì  ìê°ì ëë¸ì´ */
         time_t    st_ctime;         /* ë§ì§ë§ file status ìì  ìê° */
         long      st_ctimensec;     /* ë§ì§ë§ file status ìì  ìê°ì ëë¸ì´ */
     #endif
         off_t     st_size;          /* ë°ì´í¸ ë¨ìì íì¼ì í¬ê¸° */
         int64_t   st_blocks;        /* íì¼ì í ë¹í  ì ììë ë¸ë¡ì */
         u_int32_t st_blksize;       /* ìì¶ë ¥ì ìµì ì¸ ë¸ë¡ ì¬ì´ì¦ */
         u_int32_t st_flags;         /* íì¼ì ëí ì ì  ì ì íëê·¸ */
         u_int32_t st_gen;           /* íì¼ ìì± ë²í¸ */
     };

     struct stat ì ìê°ì ê´í íëë, ì´íëë¡ìëë¤.

     st_atime     íì¼ì ë°ì´í°ê° ë§ì§ë§ì ì¡ì¸ì¤ ëìì ë ê°.  mknod(2), utimes(2),
                  read(2) ìì¤í ì½ë¡ ë³ê²½ë©ëë¤.

     st_mtime     íì¼ì ë°ì´í°ê° ë§ì§ë§ì ìì ëìì ë ê°.  mknod(2), utimes(2),
                  write(2) ìì¤í ì½ë¡ ë³ê²½ë©ëë¤.

     st_ctime     file statusê° ë§ì§ë§ì ë³ê²½ëìì ë ê° (inode ë°ì´í°ì ìì ).
                  chmod(2), chown(2), link(2), mknod(2), rename(2), unlink(2),
                  utimes(2), write(2) ìì¤í ì½ë¡ ë³ê²½ë©ëë¤.

     _POSIX_SOURCE íì§ë§ ì ìëì´ ìì§ ìì ê²½ì°, ìê°ì ê´í íëë ì´íì ê°ì´ ì ìë©ëë¤.

     #ifndef _POSIX_SOURCE
     #define st_atime st_atimespec.tv_sec
     #define st_mtime st_mtimespec.tv_sec
     #define st_ctime st_ctimespec.tv_sec
     #endif

     struct stat ì ì¬ì´ì¦ì ê´í íëë, ì´íëë¡ìëë¤.

     st_blksize     íì¼ì ìµì ì¸ ìì¶ë ¥ ë¸ë¡ ì¬ì´ì¦.

     st_blocks      íì¼ì 512 ë°ì´í¸ ë¨ìë¡ í ë¹í  ì ììë ë¸ë¡ì ì¤ì ì ì.  짧ì
                    ê¸°í¸ ì°ê²°ì´ inode ì ë³´ê´ ì ì§ëê³  ìë ê²½ì°, ì´ ìì¹ê° 0
                    ì´ ëë ì¼ì´ ììµëë¤.

     ì¤íì´í°ì¤ ì ë³´ ìë st_mode ìë, ì´íì ê°ì ë¹í¸ê° ììµëë¤.

     #define S_IFMT 0170000           /* íì¼ì íì */
     #define        S_IFIFO  0010000  /* ì´ë¦ ì²¨ë¶ íì´í (fifo) */
     #define        S_IFCHR  0020000  /* ìºë¦í°í í¹ì íì¼ */
     #define        S_IFDIR  0040000  /* ëë í 리 */
     #define        S_IFBLK  0060000  /* ë¸ë¡í í¹ì íì¼ */
     #define        S_IFREG  0100000  /* íµì */
     #define        S_IFLNK  0120000  /* ê¸°í¸ ì°ê²° */
     #define        S_IFSOCK 0140000  /* ìì¼ */
     #define        S_IFWHT  0160000  /* íì´í¸ ìì */
     #define S_ISUID 0004000  /* ì¤íìì ì ì  ID 를 ì¤ì  */
     #define S_ISGID 0002000  /* ì¤íìì 그룹 ID 를 ì¤ì  */
     #define S_ISVTX 0001000  /* ì¬ì©íìë ì¤ì ë íì¤í¸ë¥¼ ë³´ì¡´ */
     #define S_IRUSR 0000400  /* ì½ê¸° ê¶íì ìì ì */
     #define S_IWUSR 0000200  /* 기ì ê¶íì ìì ì */
     #define S_IXUSR 0000100  /* ì¤í/ê²ì ê¶íì ìì ì */
     ì¡ì¸ì¤ 모ëì 리ì¤í¸ì ëí´ìë, ⟨sys/stat.h⟩, access(2), chmod(2) (ì)를
     ì°¸ì¡°í´ ì£¼ì¸ì.

ë°íê°
     Upon successful completion, the value 0 is returned; otherwise the
     value -1 is returned and the global variable errno is set to indicate the
     error.

í¸íì±
     ì´ì ì ë²ì ¼ì ìì¤íììë, st_dev, st_uid, st_gid, st_rdev, st_size,
     st_blksize, st_blocks íëì ë¤ë¥¸ íìì ì¬ì©íê³  ìììµëë¤.

ìë¬
     stat() (ì)ê³¼ lstat() (ì)ë, ì´íì ê°ì ê²½ì°ì ìë¬ê° ë©ëë¤.

     [ENOTDIR]          í¨ì¤ì ìê°ììì¤ì ëë í 리 ì´ì¸ì ê²ì´ í¬í¨ëì´ ììµëë¤.

     [ENAMETOOLONG]     í¨ì¤ëªì ìê°ììê° 255 ìºë¦í°ë¥¼ ëê³  ìëì§, ëë í¨ì¤ëª
                        ì ì²´ê° 1023 ìºë¦í°ë¥¼ ëê³  ììµëë¤.

     [ENOENT]           ì§ì ë íì¼ì´ ì¡´ì¬íì§ ììµëë¤.

     [EACCES]           ì§ì ë í¨ì¤ìë, ê²ìì´ íê°ëì´ ìì§ ìì ëë í ë¦¬ê° í¬í¨ëì´
                        ììµëë¤.

     [ELOOP]            í¨ì¤ëªì ë³íí  ê²½ì°ì ê²ì¶ë ê¸°í¸ ì°ê²°ì´ ë무 ë§ìµëë¤.

     [EFAULT]           sb ì¸ê° name (ì)ë, íë¡ì¸ì¤ì í ë¹í  ì ììë address
                        ê³µê°ì ë²ìì¸ë¥¼ ê°ë¦¬í¤ê³  ììµëë¤.

     [EIO]              íì¼ ìì¤íììì ì½ê³  ì°ê¸°ì¤ì ìì¶ë ¥ ìë¬ê° ë°ìíìµëë¤.

     fstat() (ì)ë, ì´íì ê°ì ê²½ì°ì ìë¬ê° ë©ëë¤.

     [EBADF]            fd íì§ë§, ì í¨í 기ì ìê° ìëëë¤.

     [EFAULT]           sb (ì)ë, íë¡ì¸ì¤ì í ë¹í  ì ììë address ê³µê°ì ë²ìì¸ë¥¼
                        ê°ë¦¬í¤ê³  ììµëë¤.

     [EIO]              íì¼ ìì¤íì ì½ê³  ì°ê¸°íê³  ìë ëìì ìì¶ë ¥ ìë¬ê°
                        ë°ìíìµëë¤.

ê´ë ¨ í목
     access(2), chmod(2), chown(2), utimes(2), symlink(7)

ë²ê·¸
     fstat() (ì)를 ìì¼ ( ë° íì´í)ì ì ì©íë©´(ì), ë¸ë¡ ì¬ì´ì¦ íë, ë° ê³ ì
     ëë°ì´ì¤ì inode ë²í¸ ì´ì¸ì 0 ì´ ë¤ì´ê° ë²í¼ê° ëëë ¤ì§ëë¤.

íì¤
     stat() í¨ì í¸ì¶ê³¼ fstat() í¨ì í¸ì¶ì, ISO/IEC 9945-1:1990 (“POSIX.1”) ì
     ì¤ê±°íê³  ììµëë¤.

ìì¬
     stat() í¨ì í¸ì¶ê³¼ fstat() í¨ì í¸ì¶ì, Version 7 AT&T UNIX 그리ê³
     ë±ì¥íìµëë¤.  lstat() í¨ì í¸ì¶ì 4.2BSD ê·¸ë¦¬ê³  ë±ì¥íìµëë¤.