stat
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : docbook>stat(2)



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

HTML º¯È¯¹®¼­

<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook V4.1//EN"> 
<chapter lang=ko> 
<!-- ÀÛ¼ºÀÚ : yundream             --> 
<!-- ÀÛ¼ºÀÏ : 2004/01/27           --> 
<!-- ¿¬¶ôó : yundream@joinc.co.kr -->  
 
<!-- ÇÔ¼ö À̸§À» ÀÔ·ÂÇÕ´Ï´Ù --> 
<title>stat(2)</title> 
 
<!-- ÀÌ°Ç ÇÔ¼ö¿¡ ´ëÇÑ ´ë·«ÀûÀÎ ¼³¸íÀ̱¸¿ä --> 
<para> 
    ÆÄÀÏÀÇ »óŸ¦ ¾ò¾î¿Â´Ù. 
</para> 
  
<!-- ¿©±â¿¡ ÇÔ¼öÀÇ °£´ÜÇÑ »ç¿ë¹ýÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>»ç¿ë¹ý</title> 
    <para> 
        <screen> 
#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); 
        </screen> 
    </para> 
</section> 
 
<!-- ¿©±â¿£ ÇÔ¼öÀÇ ÀÚ¼¼ÇÑ ¼³¸í ÀÌ µé¾î°©´Ï´Ù --> 
<section> 
    <title>¼³¸í</title> 
    <para> 
        stat() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é ÆÄÀÏÀÇ »óŸ¦ ¾Ë¾Æ¿Ã¼ö ÀÖ´Ù. ù¹øÂ° ÀÎÀÚ·Î  
        ÁÖ¾îÁø file_name ÀÇ »óŸ¦ ¾ò¾î¿Í¼­ µÎ¹øÂ° ÀÎÀÚÀÎ buf ¿¡ ä¿ö ³Ö´Â´Ù.  
    </para> 
    <para> 
        lstat() ÇÔ¼ö´Â ½Éº¼¸¯ ¸µÅ©ÆÄÀÏÀÇ ¿øº»ÆÄÀÏÀÇ »óŸ¦ ¾ò¾î¿Â´Ù´Â °ÍÀ»  
        Á¦¿ÜÇϰí´Â stat() ÇÔ¼ö¿Í µ¿ÀÏÇÏ´Ù.  
    </para> 
    <para> 
        fstat() ´Â open(2) µîÀ» ÅëÇØ¼­ ¸¸µé¾îÁø ÆÄÀÏÁö½ÃÀÚ¸¦ ÀÎÀÚ·Î  
        ¹Þ¾ÆµéÀδٴ Á¡ ¿Ü¿¡´Â stat() ¿Í µ¿ÀÏÇÑ ÀÏÀ» ¼öÇàÇÑ´Ù.  
    </para> 
    <para> 
        À̵é ÇÔ¼ö´Â ¼º°øÀûÀ¸·Î ¼öÇàµÉ°æ¿ì ÆÄÀÏÀÇ Á¤º¸¸¦  
        <emphasis>stat</emphasis>±¸Á¶Ã¼¿¡ º¹»çÇÑ´Ù. stat±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ 
        Á¤ÀǵǾî ÀÖ´Ù. 
        <screen> 
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 */ 
    blksize_t     st_blksize;  /* blocksize for filesystem I/O */ 
    blkcnt_t      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 */ 
}; 
        </screen> 
    </para> 
</section> 
 
<!-- ÇÔ¼ö°¡ µÇµ¹·ÁÁÖ´Â °ªÀ̱¸¿ä --> 
<section> 
    <title>¹Ýȯ°ª</title> 
    <para> 
        ¼º°øÇÒ°æ¿ì 0À» ½ÇÆÐÇßÀ»°æ¿ì¿¡´Â -1À» ¹ÝȯÇϸç, Àû´çÇÑ errno °ªÀ»  
        ¼³Á¤ÇÑ´Ù.  
    </para> 
</section> 
 
<!-- ¿¡·¯°¡ ¹ß»ýÇßÀ»¶§ µÇµ¹·ÁÁÖ´Â °ªµéÀÔ´Ï´Ù --> 
<section> 
    <title>¿¡·¯</title> 
    <para> 
        <variablelist>     
            <varlistentry> 
            <term>EBADF</term>     
            <listitem> 
                <para>     
                    À߸øµÈ ÆÄÀÏ ÁöÁ¤ÀÚ 
                </para>     
            </listitem> 
            </varlistentry> 
 
            <varlistentry> 
            <term>ENOENT</term> 
            <listitem> 
                <para> 
                    ÆÄÀÏÀ̸§À» ã±â À§ÇÑ °æ·ÎÀÇ ±¸¼º¿ä¼öÁß Á¸ÀçÇÏÁö ¾Ê´Â  
                    °æ·Î°¡ ÀÖÀ» °æ¿ì 
                </para> 
            </listitem> 
            </varlistentry> 
            <varlistentry> 
            <term>EACCESST</term> 
            <listitem> 
                <para> 
                    Àб⠱ÇÇÑÀÌ ¾ø´Ù. 
                </para> 
            </listitem> 
            </varlistentry> 
            <varlistentry> 
            <term>ENOTDIR</term> 
            <listitem> 
                <para> 
                    ±¸¼º¿ä¼ÒÁß µð·ºÅ丮°¡ ¾Æ´Ñ°Ô ÀÖ´Ù. 
                </para> 
            </listitem> 
            </varlistentry> 
        </variablelist>     
    </para> 
</section> 
 
<!-- ¸¶Áö¸·À¸·Î ¿¡Á¦ ÀÔ´Ï´Ù                                                 --> 
<!-- ¿©±â¿¡´Â ¿ÏÀüÇÑ ¿¹Á¦°¡ µé¾î°¡ Àִµ¥, ±»ÀÌ ¿ÏÀüÇÑ ¿¹Á¦¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ --> 
<!-- ÄÚµå ÀϺκи¸ ÀÛ¼ºÇؼ­ ¿Ã·ÁÁּŵµ µË´Ï´Ù                               -->  
<!-- "<", ">", "&" µîÀº º¯È¯ÇØ ÁÖ¼Å¾ß Çϴµ¥, ±ÍÂúÀ¸½Ã¸é :-) º¯È¯ ÇÏÁö ¾Ê   --> 
<!-- ¾Æµµ µË´Ï´Ù. Á¦°¡ °Ë»ç ÇØ¼­ ¿Ã¸®°Ú½À´Ï´Ù                               --> 
<!-- ¿¹Á¦¿¡ ´ëÇÑ °£´ÜÇÑ ¼³¸íÀ» Àû¾îÁּŵµ µÇ±¸¿ä                            --> 
<section> 
    <title>¿¹Á¦</title> 
    <para> 
        <screen> 
#include <unistd.h> 
#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 
#include <stdio.h> 
#include <pwd.h> 
#include <grp.h> 
 
int main(int argc, char **argv) 
{ 
    int return_stat; 
    char *file_name; 
    struct stat file_info; 
 
    struct passwd *my_passwd; 
    struct group  *my_group; 
 
    mode_t file_mode; 
     
    if (argc != 2 ) 
    { 
        printf("Usage : ./file_info [file name]\n"); 
        exit(0); 
    } 
    file_name = argv[1];     
 
    if ((return_stat = stat(file_name, &file_info)) == -1) 
    { 
        perror("Error : "); 
        exit(0); 
    } 
 
    file_mode = file_info.st_mode; 
    printf("ÆÄÀÏÀ̸§ : %s\n", file_name); 
    printf("=======================================\n"); 
    printf("ÆÄÀÏ Å¸ÀÔ : "); 
    if (S_ISREG(file_mode)) 
    { 
        printf("Á¤±ÔÆÄÀÏ\n"); 
    } 
    else if (S_ISLNK(file_mode)) 
    { 
        printf("½Éº¼¸¯ ¸µÅ©\n"); 
    } 
    else if (S_ISDIR(file_mode)) 
    { 
        printf("µð·ºÅ丮\n");     
    } 
    else if (S_ISCHR(file_mode)) 
    { 
        printf("¹®ÀÚ µð¹ÙÀ̽º\n"); 
    } 
    else if (S_ISBLK(file_mode)) 
    { 
        printf("ºí·° µð¹ÙÀ̽º\n"); 
    } 
    else if (S_ISFIFO(file_mode)) 
    { 
        printf("FIFO\n"); 
    } 
    else if (S_ISSOCK(file_mode)) 
    { 
        printf("¼ÒÄÏ\n"); 
    } 
 
    my_passwd = getpwuid(file_info.st_uid); 
    my_group  = getgrgid(file_info.st_gid); 
    printf("OWNER : %s\n", my_passwd->pw_name); 
    printf("GROUP : %s\n", my_group->gr_name); 
    printf("FILE SIZE IS : %d\n", file_info.st_size); 
    printf("¸¶Áö¸· ÀÐÀº ½Ã°£ : %d\n", file_info.st_atime); 
    printf("¸¶Áö¸· ¼öÁ¤ ½Ã°£ : %d\n", file_info.st_mtime); 
    printf("Çϵ帵ũµÈ ÆÄÀϼö : %d\n", file_info.st_nlink); 
} 
        </screen> 
    </para> 
</section> 
</chapter> 
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.