[리눅스 시스템 프로그래밍] 4. 파일의 상태

이번 장에서는 파일의 상태에 관해 알아봅시다.

리눅스(유닉스) 시스템에서는 파일의 상태를 stat 구조체로 정의하고 있습니다. 그리고 파일의 상태를 확인할 수 있는 여러 가지 시스템 호출을 제공합니다. ls 명령어는 파일의 상태를 확인하는 명령입니다.

리눅스 시스템에서는 파일의 상태를 구조체 stat으로 정의하고 있습니다.

struct stat{
    mode_t st_mode; //파일 타입과 퍼미션
    ino_t st_ino;//i-node 번호
    dev_t st_dev; //장치 번호
    dev_t st_rdev; //특수 파일의 장치 번호
    nlink_t st_nlink; //링크 수
    uid_t st_uid;//소유자의 USER ID
    gid_t st_gid; //소유자의 GROUP ID
    off_t st_size; //정규파일의 바이트 수
    time_t st_atime; //마지막 접근 시각
    time_t st_mtime: //마지막 수정 시각
    time_t st_ctime; //마지막 상태 변경 시각
    long st_blksize; // I/O 블록 크기
    long st_blocks;//할항한 블록의 개수
};

구조체 stat에는 파일의 타입과 퍼미션, inode 번호와 장치 번호, 사용자 정보 및 파일 접근 시각과 블록 정보를 갖고 있습니다. 이러한 정보를 확인하고자 할 때 사용하는 시스템 호출에는 stat, fstat, lstat 등이 있습니다.

#include <sys/types.h >

#include <sys/stat.h>

int stat(const char *path, struct stat *buf);

int fstat(int fd, struct stat *buf);

int lstat(const char *path, struct stat *buf); – 심볼릭 링크일 때 링크 파일 자체 정보를 확인

반환 값: 성공 시 0, 실패 시 -1

[그림 4.1] ls -al 명령을 수행한 결과 화면
[그림 4.1] ls -al 명령을 수행한 결과 화면

 리눅스 명령어 중에 ls는 파일의 상태 정보를 확인할 때 사용하는 명령어입니다.

ls -al 명령 결과의 가장 앞부분 10자리는 파일 종류와 소유자의 권한(rwx), 소유 그룹의 권한, GUEST 권한입니다. 그리고 나오는 숫자는 링크 수를 의미합니다. 이어서 소유자와 소유자 그룹이 나옵니다. 다음의 수는 파일의 크기를 의미하며 이어서 마지막 수정 시각과 파일명이 나옵니다.

이번 장에서는 파일 상태를 확인하는 시스템 호출을 사용하는 방법에 관해 다룰 것입니다.