Hello 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) { (void)fprintf(stderr, "access() error : %s\n", strerror(errno)); return 1; } } return 0; } stat.c #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <errno.h> #define MAX_LOOPS 5000000 int main(void) { unsigned int i; struct stat stat_buf; for (i = 0; i < MAX_LOOPS; i++) { if (stat("abcd", &stat_buf) == -1) { (void)fprintf(stderr, "stat() error : %s\n", strerror(errno)); return 1; } } return 0; } open.c #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h> #define MAX_LOOPS 5000000 int main(void) { int fd; unsigned int i; for (i = 0; i < MAX_LOOPS; i++) { if ((fd = open("abcd", O_RDONLY)) == -1) { (void)fprintf(stderr, "open() error : %s\n", strerror(errno)); return 1; } else { (void)close(fd); } } return 0; } - 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