
fstat 함수는 파일의 상태를 얻을 때 사용하는 시스템 콜입니다. file type에 대한 정보를 얻으려면 stat 구조체의 st_mode 필드를 사용합니다.
st_mode 필드는 파일의 타입, 권한, 소유자, 그룹, 기타 정보를 포함하는 16비트의 비트 필드입니다.
파일의 타입을 구분하는 방법은 다음과 같습니다.
- S_ISREG(st_mode) : 일반 파일
- S_ISDIR(st_mode) : 디렉토리
- S_ISLNK(st_mode) : 심볼릭 링크
- S_ISFIFO(st_mode) : 파이프
- S_ISSOCK(st_mode) : 소켓
이러한 함수를 사용하여 file type을 구분하여 사용할 수 있습니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
c
#include
#include
int main() {
struct stat statbuf;
if (fstat(fd, &statbuf) == -1) {
perror("fstat");
return 1;
}
if (S_ISREG(statbuf.st_mode)) {
printf("일반 파일n");
} else if (S_ISDIR(statbuf.st_mode)) {
printf("디렉토리n");
} else if (S_ISLNK(statbuf.st_mode)) {
printf("심볼릭 링크n");
} else if (S_ISFIFO(statbuf.st_mode)) {
printf("파이프n");
} else if (S_ISSOCK(statbuf.st_mode)) {
printf("소켓n");
} else {
printf("알 수 없는 파일 타입n");
}
return 0;
}
이 예제에서는 fstat 함수를 사용하여 파일의 상태를 얻은 후, stat 구조체의 st_mode 필드를 사용하여 파일의 타입을 구분합니다.
2025-08-06 09:57