On Sun, 9 Sep 2007, Glynn Clements wrote:
Holger Kiehl wrote:
What is the quickest way to test if a file or directory exist.
I can think of three different system calls that can be used:
access(), stat() and open(). Writting a little test program I
found that this is also the order of which is the quickest,
that is access() is the quickest and open() the slowest. The code
for the test programms is shown below.
The question I have is there any other system call that I can use
that would be cheaper then access(). Even if they are linux specific
system calls I would like to know.
Thanks,
Holger
access.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#define MAX_LOOPS 5000000
int main(void)
{
unsigned int i;
for (i = 0; i < MAX_LOOPS; i++)
{
if (access("abcd", R_OK) != 0)
If you just want to check for existence, use F_OK. If you use R_OK,
the call will fail if you don't have read permission for the file.
Right. I thought F_OK was just for files and not directories, but that is
wrong, a directory is also just a file. Also, testing showed that F_OK is
quicker then R_OK.
Thanks a lot for the advice!
Holger
-
To unsubscribe from this list: send the line "unsubscribe linux-c-programming" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html