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

+ Recent posts