반응형
파일 종류 검색 - 상수를 이용한 파일 종류 검색
- 파일 종류에 대한 상수
- st_mode의 16진수 값과 0xF000(=S_IFMT) and 연산하면 파일 종류 부분 만 나타내는 정보를 획득 할 수 있다.
statInfo.c - 상수를 이용해 파일 종류 검색
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <sys/types.h> #include <sys/stat.h> #include <stdio.h> int main(void) { struct stat buf; int kind; stat("unix.txt", &buf); printf("Mode = %o (Hexadecimal : %x)\n", (unsigned int)buf.st_mode, (unsigned int)buf.st_mode); kind = buf.st_mode & S_IFMT; printf("Kind = %x\n", kind); switch(kind) { case S_IFIFO: printf("unix.txt : FIFO\n"); break; case S_IFDIR: printf("unix.txt : Directory\n"); break; case S_IFREG: printf("unix.txt : Regular File\n"); break; } return 0; } |
실행 결과
파일 접근권한 정보 저장
- stat 구조체에서 st_mode 항목에 파일의 종류와 접근권한 정보 저장
- st mode 값의 구조
파일 종류 검색 - 매크로를 이용한 파일 종류 검색
- 매크로 목록
- 각 매크로는 인자로 받은 mode 값을 0xF000과 AND연산 수행
- AND 연산의 결과를 파일의 종류별로 정해진 값과 비교하여 파일의 종류 판단
- 이 매크로는 POSIX 표준
macroInfo.c - 매크로를 이용해 파일 종류 검색
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | a#include <sys/types.h> #include <sys/stat.h> #include <stdio.h> int main(void) { struct stat buf; stat("unix.txt", &buf); printf("Mode =%o (Hexadecimal : %x)\n", (unsigned int)buf.st_mode, (unsigned int)buf.st_mode); if(S_ISFIFO(buf.st_mode)) printf("unix.txt : FIFO\n"); if(S_ISDIR(buf.st_mode)) printf("unix.txt : Directory\n"); if(S_ISREG(buf.st_mode)) printf("unix.txt : Regualr File\n"); return 0; } |
실행 결과
반응형
'Programming > C/C++' 카테고리의 다른 글
C/Linux/파일 접근권한 변경 (0) | 2017.11.09 |
---|---|
C/Linux 파일 접근 권한 검색 (0) | 2017.11.02 |
C/Linux 파일 정보 검색 (0) | 2017.11.02 |
C/고수준 파일 입출력/임시 파일 생성 (0) | 2017.10.26 |
C/고수준 파일 입출력/파일 포인터와 파일 기술자간 변환 (0) | 2017.10.26 |