#include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int fd; int ret; DIR *dir; struct dirent *ptr; dir = opendir(argv[1]); fd = dirfd(dir); if (fd < 0) { perror("Failed to get dirfd!"); exit(EXIT_FAILURE); } ret = fork(); if (ret == 0) { int ret1, i; static int array[11] = {0, 1, 2, 3, 1023, 1024, 1025, 4095, 4096, 4097, 0x7fffffff}; while(1) { for(i = 0; i < 11; i++) { ret1 = lseek(fd, array[i++], SEEK_SET); if (ret1 == -1) { perror("Seek failed!"); exit(EXIT_FAILURE); } } off_t pos = lseek(fd, 0, SEEK_CUR); lseek(fd, pos, SEEK_SET); } } else { while (1) { int ret2 = lseek(fd, 0, SEEK_SET); if (ret2 == -1) { perror("Seek failed!"); exit(EXIT_FAILURE); } while ((ptr = readdir(dir))) ; } } closedir(dir); exit(EXIT_SUCCESS); }