#define _POSIX_C_SOURCE 200809L //#define _GNU_SOURCE #include #include #include #include #include #include #include #include /* "somedir" should be an existing subdirectory of the current directory */ int main(int argc, char* argv[]){ int fd=open("somedir", O_RDONLY|O_PATH|O_DIRECTORY); // int fd=open("somedir", O_RDONLY|O_DIRECTORY); if(fd == -1){ fprintf(stderr, "open: %d\n", errno); exit(1); } DIR* dir=fdopendir(fd); // DIR* dir=opendir("somedir"); if(dir == NULL){ fprintf(stderr, "fdopendir: %d\n", errno); exit(1); } struct dirent* de; errno=0; de=readdir(dir); if(de == NULL && errno){ fprintf(stderr, "readdir: %d\n", errno); exit(1); } }