C Interview Questions and Answers

 

How can I check whether a file exists? I want to warn the user if a requested input file is missing.

It's surprisingly difficult to make this determination reliably and portably.
Any test you make can be invalidated if the file is created or deleted (i.e. by
some other process) between the time you make the test and the time you try to open
the file.



Three possible test functions are stat, access, and fopen. (To make an approximate
test using fopen, just open for reading and close immediately, although failure
does not necessarily indicate nonexistence.) Of these, only fopen is widely portable,
and access, where it exists, must be used carefully if the program uses the Unix
set-UID feature. (If you have the choice, the best compromise is probably one of
the stat functions.)



Rather than trying to predict in advance whether an operation such as opening a
file will succeed, it's often better to try it, check the return value, and
complain if it fails. (Obviously, this approach won't work if you're trying
to avoid overwriting an existing file, unless you've got something like the
O_EXCL file opening option available, which does just what you want in this case.)

Posted by:Richards