Best way to test for existence of a file

Ask a Question related to UNIX Programming, Design and Development.

  1. #1

    Default Best way to test for existence of a file

    Hello,

    I was wondering what is the most bullet proof way to test for a file. I am
    concerned, that a program could hang when trying to test for the existence of a
    file across an NFS mount that is humped.

    Not that that happens alot, but if it does happen I don't want a program to
    hang because NFS is not giving it a response.

    Yours,

    Stuart


    Dr. Stuart A. Weinstein
    Ewa Beach Institute of Tectonics
    "To err is human, but to really foul things up
    requires a creationist"
    Bigdakine Guest

  2. Similar Questions and Discussions

    1. Testing for the existence of a file
      Using Perl 5.6.1 on HP-UX. I need to test for the existence of a file every day. The filename changes each day because the filename contains a...
    2. Bitmaps are displaced when opening FH9 file-I need a test file
      Would someone who has reported opening FH 9/10 files in FH MX containing bitmaps that were being displaced please send me a file that displays this...
    3. Test for file existence
      "Brian Berneker" <brianberneker@hotmail.com> wrote in message news:bf5e3v$v7j$1@news1.mountaincable.net... Good. What does it say on page 2 of...
    4. CGI: how to test existence of file to upload?
      I'm using CGI.pm to write a CGI form. This form includes a filefield. How can I test if the file entered by the user actually exists? (I tried...
    5. Test for existence of a #temp table
      Any wouldn't you just know it, I see the answer to my question already posted below. Thanks. "Larry Gibson" <hhom@pacbell.net> wrote in message...
  3. #2

    Default Re: Best way to test for existence of a file

    On 09 Jul 2003 01:51:26 GMT, Bigdakine <bigdakine@aol.comGetaGrip> wrote:
    > Hello,
    >
    > I was wondering what is the most bullet proof way to test for a file. I
    > am
    > concerned, that a program could hang when trying to test for the
    > existence of a
    > file across an NFS mount that is humped.
    >
    > Not that that happens alot, but if it does happen I don't want a program
    > to
    > hang because NFS is not giving it a response.
    >
    > Yours,
    >
    > Stuart
    >
    >
    > Dr. Stuart A. Weinstein
    > Ewa Beach Institute of Tectonics
    > "To err is human, but to really foul things up requires a creationist"
    >

    Can't answer the actual question, becuase I'm not an NFS expert, but the
    general answer is the access system call. stat is also fine, with a bit
    more work.

    To prevent hanging, set an alarm before you issue the call. If it goes off
    (you'll need a signal handler), you know that you have some cleanup work to
    do.

    However, access and stat are not blocking system calls, so they aren't
    required to be interrupted by a signal (EINTR), and probably won't be. You
    need to longjmp out of the signal handler to get around the stuck call.

    This is all theoretical. It is entirely possible that the level of
    stuckness is beyond what my siimple suggestion is capable of dealing with.

    --Marc
    Marc Rochkind Guest

  4. #3

    Default Re: Best way to test for existence of a file

    >Subject: Re: Best way to test for existence of a file
    >From: Marc Rochkind [email]rochkind@basepath.com[/email]
    >Date: 7/8/03 4:36 PM Hawaiian Standard Time
    >Message-id: <oprr0uu40rojfyi9@den.news.speakeasy.net>
    >
    >On 09 Jul 2003 01:51:26 GMT, Bigdakine <bigdakine@aol.comGetaGrip> wrote:
    >
    >> Hello,
    >>
    >> I was wondering what is the most bullet proof way to test for a file. I
    >> am
    >> concerned, that a program could hang when trying to test for the
    >> existence of a
    >> file across an NFS mount that is humped.
    >>
    >> Not that that happens alot, but if it does happen I don't want a program
    >> to
    >> hang because NFS is not giving it a response.
    >>
    >> Yours,
    >>
    >> Stuart
    >>
    >>
    >> Dr. Stuart A. Weinstein
    >> Ewa Beach Institute of Tectonics
    >> "To err is human, but to really foul things up requires a creationist"
    >>
    >
    >
    >Can't answer the actual question, becuase I'm not an NFS expert, but the
    >general answer is the access system call. stat is also fine, with a bit
    >more work.
    >
    >To prevent hanging, set an alarm before you issue the call. If it goes off
    >(you'll need a signal handler), you know that you have some cleanup work to
    >do.
    >
    >However, access and stat are not blocking system calls, so they aren't
    >required to be interrupted by a signal (EINTR), and probably won't be. You
    >need to longjmp out of the signal handler to get around the stuck call.
    >
    >This is all theoretical. It is entirely possible that the level of
    >stuckness is beyond what my siimple suggestion is capable of dealing with.
    >
    THanks for your response, unless something else is suggested, I'll give that a
    shot.

    Yours,

    Stuart
    Dr. Stuart A. Weinstein
    Ewa Beach Institute of Tectonics
    "To err is human, but to really foul things up
    requires a creationist"
    Bigdakine Guest

  5. #4

    Default Re: Best way to test for existence of a file


    "Marc Rochkind" <rochkind@basepath.com> wrote in message
    news:oprr0uu40rojfyi9@den.news.speakeasy.net...
    > Can't answer the actual question, becuase I'm not an NFS expert, but the
    > general answer is the access system call. stat is also fine, with a bit
    > more work.
    > To prevent hanging, set an alarm before you issue the call. If it goes off
    > (you'll need a signal handler), you know that you have some cleanup work
    to
    > do.
    > However, access and stat are not blocking system calls, so they aren't
    > required to be interrupted by a signal (EINTR), and probably won't be. You
    > need to longjmp out of the signal handler to get around the stuck call.
    > This is all theoretical. It is entirely possible that the level of
    > stuckness is beyond what my siimple suggestion is capable of dealing with.
    In all likelihood, this won't work. The problem is that NFS generally
    tries to emulate other file systems and other file systems don't allow you
    to break out of blocking on disk I/O woth a signal. Even if you could do
    non-blocking reads/writes, that wouldn't help you as what you're trying to
    do is a non-blocking open, stat, or access.

    Most OSes have an 'intr' mount option that makes NFS calls able to be
    interrupted by a signal. I don't know if it works for operations other than
    reads and writes, but I think that was its intent. The Linux NFS FAQ makes
    it clear that this option won't always work (because the task might be
    blocked on a kernel sempahore and a signal can't interrupt such a low-level
    wait).

    The only approach that's sure to work is to fork off a child process.

    DS


    David Schwartz Guest

  6. #5

    Default Re: Best way to test for existence of a file

    "David Schwartz" <davids@webmaster.com> writes:
    > "Bigdakine" <bigdakine@aol.comGetaGrip> wrote in message
    > news:20030710130124.14767.00000093@mb-m07.aol.com...
    >
    >> > The only approach that's sure to work is to fork off a child process.
    >
    >> You mean run fstat in the child process?
    >
    > Yes.
    While it's sure to work, it's still not "bullet-proof", which was the
    original criterion as stated by the OP.

    Maybe some heavy metal plates on the outside of the case and a cooling
    and ventilation system in conjunction with the techniques already
    mentioned. ;)

    --
    --Ed L Cashin PGP public key: [url]http://noserose.net/e/pgp/[/url]
    Ed L Cashin Guest

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

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 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139