디렉토리내에 서브 디렉토리가 있거나 또는 파일이 있을경우에 모두 삭제할수 잇는 함수는 뭔가요? remove() 함수나 rmdir() 함수의 경우엔 디렉토리안에 파일이나 서브 디렉토리가 있으면 삭제가 않되던데요.
잘 모르겠습니다만.. rm -r을 어떻게 구현했는지 살펴보면 어떨까요?
머 아래와 같이 C function을 만들면...
(정확한 code라기 보다 control flow에 대한 comment만 적으면)
int recursive_rm(char *path) {
//1. scandir()로 해당 path에 있는 엔트리와 그 개수를 구한다.
//2. 엔트릴 쭉 훑는다(도트와 더블 도트는 skip하고) 해당 엔트리 status를 stat()로 구해서
//3. 엔트리가 directory이면 지금 함수를 재귀적으로 호출하고
//4. 엔트리를 unlink()로 지운다.
//5. free()로 엔트리 정보 메모리 객체를 반납
}
/*************************************** Being the one is just like being in love. ***************************************/
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
잘 모르겠습니다만..
잘 모르겠습니다만.. rm -r을 어떻게 구현했는지 살펴보면 어떨까요?
scandir()과 recurive call
머 아래와 같이 C function을 만들면...
(정확한 code라기 보다 control flow에 대한 comment만 적으면)
int recursive_rm(char *path)
{
//1. scandir()로 해당 path에 있는 엔트리와 그 개수를 구한다.
//2. 엔트릴 쭉 훑는다(도트와 더블 도트는 skip하고) 해당 엔트리 status를 stat()로 구해서
//3. 엔트리가 directory이면 지금 함수를 재귀적으로 호출하고
//4. 엔트리를 unlink()로 지운다.
//5. free()로 엔트리 정보 메모리 객체를 반납
}
/***************************************
Being the one is just like being in love.
***************************************/
댓글 달기