디렉토리내 파일 존재 유무 파악

익명 사용자의 이미지

파일 유무를 조사해서 파일이 존재하면,
그 파일의 이름을 바꾸려고 합니다.

그런데 파일이 존재하면 정상값을 반환해주거나 하는 기능을
어떻게 사용해야 하는지 모르겠습니다.

그래서 fopen()으로 편법을 이용하려고 했습니다.
파일을 개방할 수 있으면 파일이 있는 경우이고, 불가능하면 없는 경우로
가정해서, 있으면 이름을 바꾸고 없으면 기능을 중지하는 겁니다.
어느 경우이든 파일 내용이 목적이 아니므로 개방한 뒤 바로 닫았습니다.

if( (fp = fopen( old_name, "rb")) != NULL )
{
fclose( fp );
rename( old_name, new_name );
}
else
{
fclose( fp );
return( -10 );
}

그런데 이게 컴파일은 되는데, 실행하니까 세그멘테이션 결함이
나왔습니다.

정상적으로 파일의 존재 유무를 확인하려면 어떤 방법을 써야 하는지
알려주시면 감사하겠습니다.

익명 사용자의 이미지

stat 이용하세요.

man stat

이 에러가 catch 하면 되겠네요..

ENOENT A component of the path file_name does not exist, or the path
is an empty string

익명 사용자의 이미지

안녕하세요...

아래의 두 함수를 한 번 사용을 해보시죠...

SYNOPSIS
#include

int
open(const char *path, int flags, ...)

SYNOPSIS
#include

int
rename(const char *from, const char *to)

이 함수에 관한 좀 더 자세한 사항은 man을 사용하세요...

_ 信

익명 사용자의 이미지

access(2)를 사용하세요..

yundream.txt 가 존재하는지 알아보려면..
access("yundream.txt", F_OK);
로 끝입니다.
존재하면 0 아니면 -1 을 반환합니다.

익명 사용자의 이미지

이건 그냥 permission 조사하는거 아닌가요?

--

존재유무도 확인할 수 있나요?...

익명 사용자의 이미지

open 도 존재 유무 파악으론....

안좋은것 같은데요..

descriptor 가 생기니까요...

성공했을때요.~~~~~~

익명 사용자의 이미지

제가 man에서 보니...
내가지 옵션 중에서 F_OK는 파일의 존재 여부를 확인하는게 맞네요...^^

_ 信

익명 사용자의 이미지

넵 감사~~^^

제가 자세히 못봤네요...

익명 사용자의 이미지

알고보면 정말 아무 것도 아닌 것이군요.

쓸모있는 것은 아니지만, fopen()을 사용한 방법에서도 파일 개방이
안되었을 경우의 fclose()를 없애니 에러가 사라졌습니다.

NULL 포인터에 대한 해제 동작은 운영체제마다
제각각인 모양입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.