블로그 이미지
Terapi

calendar

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

'FTW'에 해당되는 글 1

  1. 2009.09.23 [C / C++] 파일이 존재하는 디렉토리 지우기
2009.09.23 05:00 Softwere/sample code

ftw(), nftw()라는 file tree walking(traversing) 함수가 있습니다. SUS에 속해 있죠.
http://www.opengroup.org/onlinepubs/9699919799/
기본적으로는 pre-order traverse입니다만, 옵션을 줘서 post-order로 traverse할 수 있습니다.

#nclude
#include
#include

static int rmdir_helper(const char *fpath, const struct stat *sb, int tflag, struct FTW *ftwbuf)
{
 switch ( tflag )
 {
  case FTW_D:
  case FTW_DP:
   if ( rmdir(fpath) == -1 )
    perror("unlink");
    break;
   
  case FTW_F:
  case FTW_SL:
   if ( unlink(fpath) == -1 )
    perror("unlink");
   break;
  default:
  puts("do nothing");
}
return 0;

}

 
int main(int argc, char* argv)
{
const char* dir_to_remove = "/path/to/remove";
int flags = 0;
flags |= FTW_DEPTH; // post-order traverse

if ( argc == 2 )
dir_to_remove = argv[1];
if (nftw((dir_to_remove, rmdir_helper, 10, flags) == -1)
{
perror("nftw");
exit(EXIT_FAILURE);
}
return 0;
}


posted by Terapi
prev 1 next

티스토리 툴바