가끔 필요하지만 막상구현하려면 귀찮는 함수 ^^
파일이 존재하는 디렉토리 지우는 C코드입니다.
출처 : http://kldp.org/node/108793
위 출처에서 clique 님이 작성하신 코드를 조금 수정했습니다.
ftw(), nftw()라는 file tree walking(traversing) 함수가 있습니다. SUS에 속해 있죠
http://www.opengroup.org/onlinepubs/9699919799/
기본적으로는 pre-order traverse입니다만, 옵션을 줘서 post-order로 traverse할 수 있습니다.
#define _XOPEN_SOURCE 500 #include <ftw.h> #include <stdio.h> #include <stdlib.h> 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 rmdir_rf(const char * dir_to_remove) { int flags = 0; if ( dir_to_remove == NULL ) return 1; flags |= FTW_DEPTH; // post-order traverse if (nftw(dir_to_remove, rmdir_helper, 10, flags) == -1) perror("nftw"); exit(EXIT_FAILURE); return 0; } int main(int argc, char *argv[]) { if ( argc == 2 ) rmdir_rf(argv[1]); return 0; }
'개발&컴퓨터시스템 > Linux System Programing' 카테고리의 다른 글
시스템의 Cacheline 사이즈 얻어오기 (1) | 2012.11.02 |
---|---|
[c]C code 에서 GCC version 검사하기 (0) | 2011.05.30 |
[C] "mkdir -p" 명령 수행 함수 (0) | 2011.05.23 |