C перейдите в указанный каталог и найдите только простые файлы, остановитесь на первом файле и сделайте что-нибудь

Я хочу использовать nftw() и быть только на первом уровне. Но это все равно идет глубже, даже если я укажу FTW_MOUNT. Затем я хочу проверить, являются ли файлы простым файлом, и что-то с ним сделать. Вот что я пробовал:

#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <ftw.h>

int ftwinfo(const char *p, const struct stat *st, int fl, struct FTW *fbuf);

int ftwinfo(const char *p, const struct stat *st, int fl, struct FTW *fbuf){
   static int cnt = 0;
   puts( p );
   cnt++;
   if( cnt >= 10 ) return cnt;
   return 0;
}

int main(int argc,char* argv[]){
   int rv;
   int flags = FTW_MOUNT;
   rv = nftw( ".", ftwinfo, 20, flags );
   if( rv == -1 ){
      perror( "nftw failed" );
      exit( 1 );
   }
   if( rv != 0 ){
      printf( "ntfw fn function returnd %d != 0 -> nftw finished\n", rv );
   }
   return 0;
}

0 ответов

Другие вопросы по тегам