stat와 fstat 시스템 호출
파일에 대한 정보를 알고 싶을 떄에는 stat와 fstat를 이용한다.
#include <sys/types.h>
#include <sys/stat.h>
int stat(const char *pathname, struct stat *buf);
int fstat(int filedes, struct stat *buf);
먼저 stat에 대해서!
첫 번째 인수는 정보를 알고 싶은 파일 경로이름이다.
두 번째 인수는 이 호출이 성공하면 정보들이 저장될 구조체이다.
다음으로 fstat에 대해서!
첫 번째 인수는 정보를 알고 싶은 파일 경로이름이 아니라, 개방되어있는 파일 기술자이다.
두 번째 인수는 stat와 동일하다.
..
...
struct stat s;
int fd;
fd = open("/tmp/myfile", O_RDWR);
stat("/tmp/myfile", &s);
fstat(fd, &s);
stat 구조에 대한 정의는 헤더파일 <sys/stat.h>에서 찾을 수 있으며, 이 구조에서 사용되는 자료형은 헤더파일 <sys/types.h>에 있다.
다음은 stat의 구조에 대한 설명이당.
자료형 |
변수명 |
의미 |
dev_t |
st_dev |
파일이 들어 있는 논리적 장치를 기술함 |
ino_t |
st_ino |
inode 번호 |
mode_t |
st_mode |
파일 모드, 요걸 이용하여 허가 계산할 수 있음 |
nlink_t |
st_nlink |
하드링크 계수(비심볼형 링크의 수) |
uid_t |
st_uid |
파일의 사용자 식별번호 |
gid_t |
st_gid |
파일의 그룹 식별번호 |
dev_t |
st_rdev |
파일 엔트리가 장치를 기술하는 데 사용될때 의미를 가짐..(당분간 무시 ㅠㅠ) |
off_t |
st_size |
파일의 현재 논리적 크기를 바이트 수로 표시 |
time_t |
st_atime |
마지막으로 읽혔던 시간, open이나 creat할 때 |
time_t |
st_mtime |
변경된 시간 기록 |
time_t | st_ctime | stat 구조 자체가 변경될 때의 시간(link, chmod, write 등) |
long | st_blksize | 파일 시스템 고유의 I/O 블록 크기 기록 |
long | st_blocks | 특정 파일에 할당된 물리적 파일 시스템 블록의 수 기록 |
'개발 > System' 카테고리의 다른 글
특정 파일 UTF8 ↔ ANSI 변환 (0) | 2013.08.24 |
---|---|
UNIX의 디렉토리 (0) | 2012.10.29 |
다수의 이름을 갖는 파일 (0) | 2012.10.29 |
access, chmod, chown 시스템 호출 (0) | 2012.10.29 |
다중 사용자 환경에서의 파일 (0) | 2012.10.28 |