ÆÄÀÏÀÇ »óÅÂÁ¤º¸¸¦ ¾ò¾î¿Â´Ù.
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



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

<a href="/modules/moniwiki/wiki.php/manSearch?google=none&name=stat">stat</a>(2)

1장. stat(2)

ÆÄÀÏÀÇ »óŸ¦ ¾ò¾î¿Â´Ù.


1.1. »ç¿ë¹ý

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


1.2. ¼³¸í

stat() ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ¸é ÆÄÀÏÀÇ »óŸ¦ ¾Ë¾Æ¿Ã¼ö ÀÖ´Ù. ù¹øÂ° ÀÎÀÚ·Î ÁÖ¾îÁø file_name ÀÇ »óŸ¦ ¾ò¾î¿Í¼­ µÎ¹øÂ° ÀÎÀÚÀÎ buf ¿¡ ä¿ö ³Ö´Â´Ù.

lstat() ÇÔ¼ö´Â ½Éº¼¸¯ ¸µÅ©ÆÄÀÏÀÇ ¿øº»ÆÄÀÏÀÇ »óŸ¦ ¾ò¾î¿Â´Ù´Â °ÍÀ» Á¦¿ÜÇϰí´Â stat() ÇÔ¼ö¿Í µ¿ÀÏÇÏ´Ù.

fstat() ´Â open(2) µîÀ» ÅëÇØ¼­ ¸¸µé¾îÁø ÆÄÀÏÁö½ÃÀÚ¸¦ ÀÎÀÚ·Î ¹Þ¾ÆµéÀδٴ Á¡ ¿Ü¿¡´Â stat() ¿Í µ¿ÀÏÇÑ ÀÏÀ» ¼öÇàÇÑ´Ù.

À̵é ÇÔ¼ö´Â ¼º°øÀûÀ¸·Î ¼öÇàµÉ°æ¿ì ÆÄÀÏÀÇ Á¤º¸¸¦ stat±¸Á¶Ã¼¿¡ º¹»çÇÑ´Ù. 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 */
    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 */
};
		


1.3. ¹Ýȯ°ª

¼º°øÇÒ°æ¿ì 0À» ½ÇÆÐÇßÀ»°æ¿ì¿¡´Â -1À» ¹ÝȯÇϸç, Àû´çÇÑ errno °ªÀ» ¼³Á¤ÇÑ´Ù.


1.4. ¿¡·¯

EBADF

À߸øµÈ ÆÄÀÏ ÁöÁ¤ÀÚ

ENOENT

ÆÄÀÏÀ̸§À» ã±â À§ÇÑ °æ·ÎÀÇ ±¸¼º¿ä¼öÁß Á¸ÀçÇÏÁö ¾Ê´Â °æ·Î°¡ ÀÖÀ» °æ¿ì

EACCESST

Àб⠱ÇÇÑÀÌ ¾ø´Ù.

ENOTDIR

±¸¼º¿ä¼ÒÁß µð·ºÅ丮°¡ ¾Æ´Ñ°Ô ÀÖ´Ù.


1.5. ¿¹Á¦

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

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.