4.1 파일 종류 확인
리눅스 시스템에서는 파일을 정규 파일, 디렉토리 파일, 블록 파일, 문자 파일, FIFO 파일, 기타 파일 등으로 구분합니다.
블록 파일과 문자 파일은 장치와 대응하는 파일로 블록 파일은 메모리 장치와 대응하고 문자 파일은 터미널 장치와 대응합니다. FIFO 파일은 프로세스와 프로세스 간의 통신에 사용하는 파일이며 이 외에도 링크 파일이나 소켓 등이 있습니다.
그리고 리눅스 시스템에서는 파일의 종류를 확인하는 매크로 함수들을 제공하고 있습니다.
#include <sys/stat.h > S_ISREG S_ISDIR S_ISCHR S_ISBLK S_ISFIFO |
다음은 stat 시스템 호출로 파일의 상태 값을 얻어온 후에 매크로 함수를 이용하여 파일의 종류를 출력하는 예제입니다.
/*********************************************************************** * ex_filetype.c * * example source - about file type * ***********************************************************************/ #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> const char *get_filetype(struct stat *buf); int main(int argc,char **argv) { struct stat statbuf;
if(argc != 2) { fprintf(stderr,"usage: %s [file name]\n",argv[0]); return 1; } if(stat(argv[1],&statbuf)<0) { fprintf(stderr,"stat error\n"); return 1; } printf("%s is %s\n",argv[1],get_filetype(&statbuf)); return 0; } const char *get_filetype(struct stat *buf) { if(S_ISREG(buf->st_mode)) { return "regular"; } if(S_ISDIR(buf->st_mode)) { return "directory"; } if(S_ISCHR(buf->st_mode)) { return "charater"; } if(S_ISBLK(buf->st_mode)) { return "block"; } if(S_ISFIFO(buf->st_mode)) { return "fifo"; } return "unknown"; } |
[그림 4.2] 실행 화면
'프로그래밍 기술 > 리눅스(Unix) 시스템 프로그래밍' 카테고리의 다른 글
소유자 ID 및 소유 그룹 ID 변경할 때 chown, fchown (2) | 2016.11.03 |
---|---|
umask 값을 설정하여 파일 접근 권한 모드를 안전하게 (1) | 2016.11.02 |
chmod 명령의 또 다른 기능 스티키 비트와 set user id bit (0) | 2016.11.01 |
chmod, fchmod 시스템 호출로 파일의 접근 권한 변경 (0) | 2016.10.31 |
access 시스템 호출 (1) | 2016.10.31 |
파일의 상태, fstat, lstat, stat 시스템 호출 (1) | 2016.10.31 |
[리눅스/유닉스 시스템 프로그래밍] fnctl, sync, fsync (0) | 2016.04.05 |
[리눅스/유닉스 시스템 프로그래밍] dup, dup2 (0) | 2016.04.05 |
[리눅스/유닉스 시스템 프로그래밍] 파일 테이블과 파일 디스크립터 테이블 (2) | 2016.04.05 |
[리눅스/유닉스 시스템 프로그래밍] lseek (0) | 2016.04.05 |