C언어 - 파일 정보 struct stat, 구조체

IT/C 언어

파일 정보를 저장하는 구조체


struct stat 구조체를 살펴 보면 다음과 같다.


struct stat {
     dev_t           st_dev;        /*ID of device containing file */

     ino_t            st_ino;          /*inode number*/

     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 ID (if special file)*/

     off_t             st_size;         /*total size, in byte*/

     blksize_t      st_blksize;    /*blocksize for file system I/O*/

     blkcnt_t       st_blocks;     /*number of 512B blocks allocated*/

     time_t;        st_atime;      /*time of last access*/

     time_t;        st_mtime;     /*time of last modification*/

     time_t         st_xtime;       /*time of last status change*/

};


파일 정보를 담는 stat구조체에서 각 필드들은 각각 의미가 있다.


  • st_dev         - 장치 파일의 위치 및 여부를 기술

  • st_ino          - 파일의 inode 번호

  • st_mode     - 파일의 모드를 다룸

  • st_nlink       - 파일의 하드링크 수

  • st_uid          - user ID 

  • st_gid          - group ID

  • st_rdev        - 장치 파일 (inode)를 기술

  • st_size         - 파일의 사이즈 

  • st_blksiez   - 효율적인 I/O 파일 시스템 위한 블럭 사이즈

  • st_blocks    - 파일에 할당한 블럭의 수


stat 구조체에서 각 필드들 주목할 만한 부분은 바로 3번째 필드인 st_mode이다.


st_mode에 따라서 파일의 종류를 알 수 있고, 파일의 퍼미션(permission)도 알 수 있다.



st_mode로 파일 종류를 알 수 있는데, 위의 매크로로 설정 되어 있는 (m)부분에 st_mode 값를 넣어 주기만 하면 된다.


아래 예를 들자면,


이런 형식으로 파일 종류를 알 수 있다.


매크로를 통해 알 수 있는 방법과, 비트 연산 ( |, & )을 통해 파일 종류 및 퍼미션 등을 알 수 있다.


예를 보면,


st_mode와 간단한 비트 연산을 통해서 파일에 대한 정보들을 알 수 있다.


상세한 정보는

#man stat 명령어 시 확인 할 수 있다.