stat

STAT(2)                          System calls                          STAT(2)



ì´ë¦
       stat, fstat, lstat - íì¼ ìí를 ì»ëë¤

ì¬ì©ë²
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <unistd.h>

       int stat(const char *file_name, struct stat *buf);
       int fstat(int filedes, struct stat *buf);
       int lstat(const char *file_name, struct stat *buf);

ì¤ëª
       ì´ í¨ìë ì§ì ë íì¼ì ëí ì 보를 ë°ííë¤. ì´ ì 보를 ì»ê¸° ìí´ íìí ì ê·¼
       ê¶íì ìì§ë§, íì¼ì ì½ë ê²½ë¡ì ìë ëª¨ë  ëë í 리ì ëí íì ê¶íì´ íìíë¤.

       stat ë file_name ì¼ë¡ ì§ì ë íì¼ì ëí´ ì¤ëªíê³  buf ì ì±ì´ë¤.  lstat ë
       stat ì ëì¼ìëë¤.ë§í¬ë ê·¸ ìì²´ë¡ ì¤ëªëë¤, ë§í¬ì í¬í¨ëì´ ìë íì¼ì ì¤ëªíì§
       ìëë¤.

       fstat ë statì ëì¼ìëë¤.  file_name.  ëì ì filedes ì ìí´ ì§ì ë ì´ë¦°
       íì¼ë§ ( open(2) ì ìí´ ë°íëë¯ì´) ì¤ëªëë¤.


       ê·¸ê²ë¤ì 모ë ìë ììì í¬í¨íë stat 구조ì ë°ííë¤:

              struct stat
              {
                  dev_t         st_dev;      /* device */
                  ino_t         st_ino;      /* inode */
                  mode_t        st_mode;     /* protection */
                  nlink_t       st_nlink;    /* number of hard links */
                  uid_t         st_uid;      /* user ID of owner */
                  gid_t         st_gid;      /* group ID of owner */
                  dev_t         st_rdev;     /* device type (if inode device) */
                  off_t         st_size;     /* total size, in bytes */
                  unsigned long st_blksize;  /* blocksize for filesystem I/O */
                  unsigned long st_blocks;   /* number of blocks allocated */
                  time_t        st_atime;    /* time of last access */
                  time_t        st_mtime;    /* time of last modification */
                  time_t        st_ctime;    /* time of last change */
              };

       The value st_blocks ê°ì 512-bytes ë¸ë¡ì ìë íì¼ì í¬ê¸°ë¥¼ ì¤ë¤.
       st_blksize ê°ì í¨ì¨ì ì¸ íì¼ ìì¤í I/O를 ìí´ "ì íë" ë¸ë¡ í¬ê¸°ë¥¼ ì¤ë¤.
       (ë ìì ê³µê°ì íì¼ì ì°ë ê²ì ì°ê³ -ìì íê³ -ë¤ì ì°ëë° ë¹í¨ì¨ì ì´ë¤.)4

       ëª¨ë  ë¦¬ëì¤ íì¼ìì¤íì´ ëª¨ë  ìê° ìììì ì¤ííë ê²ì ìëë¤.  ì íµì ì¼ë¡,
       st_atime ë mknod(2), utime(2), read(2), write(2)truncate(2).  ë¡
       ë°ëìë¤.  ì íµì ì¼ë¡, st_mtime ë mknod(2), utime(2)write(2).  ë¡
       ë°ëìë¤.  st_mtime ë ìì ì, 그룹, íëë§í¬ ì¹´ì´í¸, í¹ì 모ëì ë³íì ë°ë¼
       ë°ëì§ ììë¤.

       ì íµì ì¼ë¡, st_ctime ë inode ì 보를 ì°ê±°ë ì¤ì í¨ì¼ë¡ì¨ ë°ëìë¤.(i.e.,
       owner, group,link count, mode,ë±ë±).

       ìë POSIX 매í¬ë¡ë íì¼ íìì íì¸íë ê²ì´ë¤:

              S_ISLNK(m)  is it a symbolic link?

              S_ISREG(m)  regular file?

              S_ISDIR(m)  directory?

              S_ISCHR(m)  character device?

              S_ISBLK(m)  block device?

              S_ISFIFO(m) fifo?

              S_ISSOCK(m) socket?

       ìë flagë st_mode ììì ìí´ ì ìë ê²ì´ë¤:

       l l l.  S_IFMT    0170000   bitmask for the file type bitfields
       S_IFSOCK  0140000   socket S_IFLNK   0120000   symbolic link
       S_IFREG   0100000   regular file S_IFBLK   0060000   block device
       S_IFDIR   0040000   directory S_IFCHR   0020000   character device
       S_IFIFO   0010000   fifo S_ISUID   0004000   set UID bit
       S_ISGID   0002000   set GID bit (see below) S_ISVTX   0001000   sticky
       bit (see below) S_IRWXU   00700     mask for file owner permissions
       S_IRUSR   00400     owner has read permission S_IWUSR   00200     owner
       has write permission S_IXUSR   00100     owner has execute permission
       S_IRWXG   00070     mask for group permissions
       S_IRGRP   00040     group has read permission S_IWGRP   00020     group
       has write permission S_IXGRP   00010     group has execute permission
       S_IRWXO   00007     mask for permissions for others (not in group)
       S_IROTH   00004     others have read permission
       S_IWOTH   00002     others have write permisson
       S_IXOTH   00001     others have execute permission

       GID ë¹í¸ (S_ISGID)ì¤ì ì ëªê°ì§ í¹ë³í ì´ì©ë²ì´ ìë¤: ëë í 리ì ê²½ì° BSD
       semanticì´ ì°ì´ê³  ììì´ ëíëë¤: ìì±ë íì¼ì ìì± íë¡ì¸ì¤ì ìì±ë ëë í 리ì
       ì í¨í gidë¡ë¶í°ê° ìëë¼ ëë í 리ë¡ë¶í° ê·¸ë¤ì 그룹 ID를 ììë°ëë¤.
       ê·¸ë¦¬ê³  S_ISGID ë¹í¸êµ°ì ê°ì§ë¤.  ì¤í ë¹í¸(S_IXGRP)êµ°ì ê°ì§ ìì íì¼ì
       ê²½ì°, mandatory file/record lockingì ëíë¸ë¤.

       ëë í 리 ìì `sticky' bit (S_ISVTX)ë ëë í 리ìì íì¼ì´ íì¼ì ìì ì,
       ëë í 리ì ìì ì, ê·¸ë¦¬ê³  루í¸ì ìí´ ì´ë¦ì ë°ëê±°ë ì§ìì§ ì ìë¤ë ê²ì
       ë»íë¤.

ë°íê°
       ì±ê³µì, 0ì´ ë°íëê³ , ì¤í¨ì, -1ì´ ë°íëë¤. ê·¸ë¦¬ê³  errno ë ì ì í ê°ì¼ë¡
       ì¤ì ëë¤.

ìë¬
       EBADF  filedes ë ì못ëë¤.

       ENOENT A component of the path file_name ê²½ë¡ì 구ì±ììê° ì¡´ì¬íì§
              ìê±°ë ê²½ë¡ê° ë¹ ë¬¸ìì´ì´ë¤.

       ENOTDIR
              ê²½ë¡ì 구ì±ììê° ëë í ë¦¬ê° ìëë¤.

       ELOOP  ì¬ë³¼ë¦ë§í¬ê° ë무 ë§ë¤.

       EFAULT ì못ë 주ìì´ë¤.

       EACCES ê¶íì´ ê±°ë¶ëë¤.

       ENOMEM ë©ëª¨ë¦¬ ë¶ì¡±.

       ENAMETOOLONG
              íì¼ëªì´ ë무 길ë¤.

í¸í
       stat ì fstat í¸ì¶ì SVr4, SVID, POSIX, X/OPEN, BSD 4.3ì ë°ë¥¸ë¤.  lstat
       í¸ì¶ì 4.3BSD and SVr4ì ë°ë¥¸ë¤.  SVr4ë ì¶ê°ì ì¼ë¡ documents additional
       fstat ìë¬ ìíì¸ EINTR, ENOLINK, EOVERFLOW를 문ìííë¤.  SVr4 ë
       ì¶ê°ì ì¼ë¡ stat ì lstat ì ìë¬ì¸ EACCES, EINTR, EMULTIHOP, ENOLINK,
       EOVERFLOW를 문ìííë¤.  st_blocks ì st_blksize íëì ì¬ì©ì ì´ìë  ì ìë¤.
       (ê·¸ê²ë¤ì POSIXììí´ ì§ì ëê²ì´ ìëê³  BSDìì ìê°ëìë¤.  í´ìì ìì¤íë§ë¤
       ë¤ë¥´ê³ , ì±ê¸ ìì¤íìì NFSê° ë§ì´í¸ëë©´ ë³µì¡í´ì§ë¤.)

       POSIXì S_IFMT, S_IFSOCK, S_IFLNK, S_IFREG, S_IFBLK, S_IFDIR, S_IFCHR,
       S_IFIFO, S_ISVTX ë¹í¸ì ëí´ ì¤ëªíì§ ìì§ë§, ëì  S_ISDIR()ë±ì 매í¬ë¡
       ì¬ì©ì ì구íë¤.  ì ëì¤ V7 (ì´ë íì ìì¤í)ì POSIXìì ê·ì í ì ì¬ì´ì¸ S_IRUSR,
       S_IWUSR, S_IXUSR ì S_IREAD, S_IWRITE, S_IEXEC를 ê°ëë¤.

í ìì¤í
       ë¤ìí ìì¤íìì ì¬ì©ëë ê°ë¤:

       l l l l l.  hex  ì´ë¦ ls   octal     ì¤ëª
       f000 S_IFMT         170000    íì¼íìì ìí mask
       0000           000000    SCO out-of-service inode, BSD unknown type
                           SVID-v2 and XPG2 have both 0 and 0100000 for
       ordinary file 1000 S_IFIFO   p|   010000    fifo (named pipe)
       2000 S_IFCHR   c    020000    character special (V7)
       3000 S_IFMPC        030000    multiplexed character special (V7)
       4000 S_IFDIR   d/   040000    directory (V7)
       5000 S_IFNAM        050000    XENIX named special file
                           with two subtypes, distinguished by st_rdev values
       1, 2: 0001 S_INSEM   s    000001    XENIX semaphore subtype of IFNAM
       0002 S_INSHD   m    000002    XENIX shared data subtype of IFNAM
       6000 S_IFBLK   b    060000    block special (V7)
       7000 S_IFMPB        070000    multiplexed block special (V7)
       8000 S_IFREG   -    100000    regular (V7)
       9000 S_IFCMP        110000    VxFS compressed
       9000 S_IFNWK   n    110000    network special (HP-UX)
       a000 S_IFLNK   l@   120000    symbolic link (BSD)
       b000 S_IFSHAD       130000    Solaris shadow inode for ACL (not seen by
       userspace) c000 S_IFSOCK  s=   140000    socket (BSD; also "S_IFSOC" on
       VxFS) d000 S_IFDOOR  D    150000    Solaris door
       e000 S_IFWHT   w%   160000    BSD whiteout (not used for inode)

       0200 S_ISVTX        001000    `sticky bit': save swapped text even
       after use (V7)                     reserved (SVID-v2)
                           On non-directories: don't cache this file (SunOS)
                           On directories: restricted deletion flag (SVID-
       v4.2) 0400 S_ISGID        002000    set group ID on execution (V7)
                           for directories: use BSD semantics for propagation
       of gid 0400 S_ENFMT        002000    SysV file locking enforcement
       (shared w/ S_ISGID) 0800 S_ISUID        004000    set user ID on
       execution (V7) 0800 S_CDF          004000    directory is a context
       dependent file (HP-UX)

       sticky ëªë ¹ì AT&T UNIX V32ìì ì ë³´ìë¤.


ê´ë ¨ í목
       chmod(2), chown(2), readlink(2), utime(2)



Linux                            May 13, 1998                          STAT(2)