Rechercher une page de manuel

Chercher une autre page de manuel:

lstat

Autres langues

Langue: ko

Version: May 13, 1998 (ubuntu - 01/11/07)

Section: 2 (Appels système)

À̸§

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 ¿µ¿ªÀ» À§ÇØ Á¤ÀÇµÈ °ÍÀÌ´Ù:

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¸¦ °®´Â´Ù.

Ÿ ½Ã½ºÅÛ

´Ù¾çÇÑ ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÇ´Â °ªµé:
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)
Il est juste que celle qui a tue son mari meure.
Il est beau qu'un fils venge son père.
Donc il est juste et beau qu'un fils tue sa mère.
-+- Aristote, Rhétorique, 2, 24 -+-