파일이 있는지 또는 디렉토리인지 확인하는 프로그램을 작성 중입니다. 이보다 더 좋은 방법이 있을까요?파일이 디렉토리인지 또는 파일인지 확인
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
int isFile(const char* name)
{
DIR* directory = opendir(name);
if(directory != NULL)
{
closedir(directory);
return 0;
}
if(errno == ENOTDIR)
{
return 1;
}
return -1;
}
int main(void)
{
const char* file = "./testFile";
const char* directory = "./";
printf("Is %s a file? %s.\n", file,
((isFile(file) == 1) ? "Yes" : "No"));
printf("Is %s a directory? %s.\n", directory,
((isFile(directory) == 0) ? "Yes" : "No"));
return 0;
}
symlink 경우를 고려할 때 symlink를 따르지 않으므로 stat() 대신 lstat()를 사용하십시오. – Sparky
[디렉토리가 존재하는지 확인] (http://stackoverflow.com/questions/3828192/checking-if-a-directory-exists-in-unix-system-call/)에서 적어도 좋은 토론이 있습니다. 여기서' stat()'와'lstat()'에 대해 논의하고 POSIX 파일 타입의 전체 집합을 개괄적으로 설명합니다. 나는 그 질문에이 질문을 반복하려는 유혹을 받는다. 코드는'stat()'의 결과도 검사하고 에러를 적절히 처리해야합니다. –
@Jonathan, 그 답변은 실제로 내 것보다 더 완전하며, 5 년 전 나의 3 개월 전에 게시되었습니다. 그리고 내 자신의 대답은 어쨌든 사라질 것 같지 않습니다. 나는 당신이'[c]'태그로 Mjölnir을 사용하는 것을 보았습니다. 그래서 일방적으로 행동하기 전에 주석을 주셔서 감사합니다. 그러나, 당신은 궁극적으로 옳습니다. 걱정할 필요가 없습니다. –