#include <dirent.h> #include <errno.h> #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> int main (void) { DIR *dirp; struct dirent* ent; /* open a dir stream */ dirp = opendir ("/tmp"); if (dirp == NULL) { if (errno == ENOENT) exit (0); perror ("opendir"); exit (1); } /* close the directory file descriptor, making it invalid */ if (close (dirfd (dirp)) != 0) { puts ("could not close directory file descriptor"); /* This is not an error. It is not guaranteed this is possible. */ return 0; } ent = readdir (dirp); return ent != NULL || errno != EBADF; }