디렉토리내 파일 존재 유무 파악
글쓴이: 익명 사용자 / 작성시간: 목, 2002/01/17 - 12:51오후
파일 유무를 조사해서 파일이 존재하면,
그 파일의 이름을 바꾸려고 합니다.
그런데 파일이 존재하면 정상값을 반환해주거나 하는 기능을
어떻게 사용해야 하는지 모르겠습니다.
그래서 fopen()으로 편법을 이용하려고 했습니다.
파일을 개방할 수 있으면 파일이 있는 경우이고, 불가능하면 없는 경우로
가정해서, 있으면 이름을 바꾸고 없으면 기능을 중지하는 겁니다.
어느 경우이든 파일 내용이 목적이 아니므로 개방한 뒤 바로 닫았습니다.
if( (fp = fopen( old_name, "rb")) != NULL )
{
fclose( fp );
rename( old_name, new_name );
}
else
{
fclose( fp );
return( -10 );
}
그런데 이게 컴파일은 되는데, 실행하니까 세그멘테이션 결함이
나왔습니다.
정상적으로 파일의 존재 유무를 확인하려면 어떤 방법을 써야 하는지
알려주시면 감사하겠습니다.
Forums:
Re: 디렉토리내 파일 존재 유무 파악
stat 이용하세요.
man stat
이 에러가 catch 하면 되겠네요..
ENOENT A component of the path file_name does not exist, or the path
is an empty string
Re: 디렉토리내 파일 존재 유무 파악
안녕하세요...
아래의 두 함수를 한 번 사용을 해보시죠...
SYNOPSIS
#include
int
open(const char *path, int flags, ...)
SYNOPSIS
#include
int
rename(const char *from, const char *to)
이 함수에 관한 좀 더 자세한 사항은 man을 사용하세요...
_ 信
Re:access 를 사용하세요
access(2)를 사용하세요..
yundream.txt 가 존재하는지 알아보려면..
access("yundream.txt", F_OK);
로 끝입니다.
존재하면 0 아니면 -1 을 반환합니다.
Re^2: Re:access 를 사용하세요
이건 그냥 permission 조사하는거 아닌가요?
--
존재유무도 확인할 수 있나요?...
Re^2: 디렉토리내 파일 존재 유무 파악
open 도 존재 유무 파악으론....
안좋은것 같은데요..
descriptor 가 생기니까요...
성공했을때요.~~~~~~
Re^3: Re:access 를 사용하세요
제가 man에서 보니...
내가지 옵션 중에서 F_OK는 파일의 존재 여부를 확인하는게 맞네요...^^
_ 信
Re^4: Re:access 를 사용하세요
넵 감사~~^^
제가 자세히 못봤네요...
답변을 주신 분들께 감사드립니다.
알고보면 정말 아무 것도 아닌 것이군요.
쓸모있는 것은 아니지만, fopen()을 사용한 방법에서도 파일 개방이
안되었을 경우의 fclose()를 없애니 에러가 사라졌습니다.
NULL 포인터에 대한 해제 동작은 운영체제마다
제각각인 모양입니다.
댓글 달기