遞迴刪除檔案(nftw 不是執行緒安全的)
#define _XOPEN_SOURCE 500
#include <stdlib.h> /* for exit() */
#include <stdio.h> /* for remove() */
#include <ftw.h> /* for nftw() */
int unlink_cb(
const char *fpath, const struct stat *sb, int typeflag, struct FTW *ftwbuf)
{
return remove(fpath);
}
int rm_rf(const char *path)
{
return nftw(path,
unlink_cb,
64 /* number of simultaneously opened fds, up to OPEN_MAX */,
FTW_DEPTH | FTW_PHYS);
}
FTW_PHYS
flag 表示不遵循符號連結
FTW_DEPTH
標誌執行後序遍歷,即在處理目錄及其子目錄的內容後,為目錄本身呼叫 unlink_cb()
。
如果回撥函式返回非零值,nftw
將被中斷。
注意:此方法不是執行緒安全的,因為 nftw
使用 chdir
。