둘둘리둘둘리둘둘리둘둘리둘둘리둘
파일 속성 획득 본문
@ 함수 stat
stat(2)
#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);
지정된 파일 정보를 stat 구조체에 반환, 정보를 얻기 위해 필요한 접근 권한은 필요없지만, 파일을 읽는 경로의 모든 디렉토리에 대한 탐색 권한이 필요.
링크 파일은 그 자체의 정보가 반환 됨, 링크에 포함된 파일을 설명하지 않음.
stat과 lstat은 동일시 된다.
fstat은 File descriptor에 지정된 열린 파일만 가능.
@ 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 */
unsigned long st_blksize; /* blocksize for filesystem I/O */
unsigned long 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 */
};
@ 파일 타입 확인 매크로
The following POSIX macros are defined to check the file type using the st_mode
field:
S_ISLNK(m) is it a symbolic link?
S_ISREG(m) regular file?
S_ISDIR(m) directory?
S_ISCHR(m) character device?
S_ISBLK(m) block device?
S_ISFIFO(m) fifo?
S_ISSOCK(m) socket?
@ 사용 예제
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include <unistd.h>
5
6
7 int main(){
8 struct stat st;
9 int res;
10
11 res = stat("./test",&st);
12
13 if( res == -1 )
14 {
15 perror("stat");
16 return 0;
17 }
18
19 if( S_ISDIR(st.st_mode) )
20 {
21 printf("this file is directory.\n");
22 }else{
23 printf("this file is not directory.\n");
24 }
25
26 return 0;
27 }
'Linux > Programming' 카테고리의 다른 글
IPC(Inter Process Communication) (0) | 2016.07.09 |
---|---|
Thread (0) | 2016.07.08 |
Signal (0) | 2016.07.05 |
유저 정보 획득 (0) | 2016.07.03 |
man page 사용법 (0) | 2016.07.02 |