遍歷目錄 nftw and ftw

2021-06-08 04:17:47 字數 2938 閱讀 2916

·      

ftw()

opendir

表頭檔案:

#include

定義函式:

int  ftw(const char *dir, int (*fn) (const *file, const struct stat *sb, int flag), int depth)

函式說明:

ftw()

會從引數

dir指定的目錄開始,往下一層層地遞迴式遍歷子目錄。

ftw()

會傳三個引數給

fn(),

第乙個引數

*file

指向當時所在的目錄路徑,第二個引數是

*sb,

為stat

結構指標,第三個引數為旗標,有下面幾種可能值

ftw_f       

一般檔案

ftw_d      

目錄ftw_dnr   

不可讀取的目錄,此目錄以下將不被遍歷

ftw_sl      

符號連線

ftw_ns      

無法取得

stat

結構資料,有可能是許可權問題

最後乙個引數

depth

代表ftw

()在進行遍歷目錄時同時開啟的檔案數。

ftw()

在遍歷時每一層目錄至少需要乙個檔案描述詞,如果遍歷時用完了

depth

所給予的限制數目,整個遍歷將因不斷地關檔案和開檔案操作而顯得緩慢

如果要結束

ftw()

的遍歷,

fn()

只需返回一非零值即可,此值同時也會是

ftw()

的返回值。否則

ftw()

會試著走完所有的目錄,然後返回0

返回值:遍歷中斷則返回

fn()

函式的返回值,全部遍歷則返回

0,若有錯誤發生則返回

-1附加說明:由於

ftw()

會動態配置記憶體使用,請使用正常方式(

fn函式返回非零值)來中斷遍歷,不要在

fn函式中使用

longjmp()

nftw

遍歷目錄樹

表頭檔案:

#include  

定義函式:

int nftw(const char *dir, int  (*fn)(const char *file, const struct stat *sb, int flag, struct ftw *s),

depth, int  flags)

函式說明:

nftw()

與ftw()

很像,都是從引數

dir指定的目錄開始,

往下一層層地遞迴遍歷子目錄。每進入乙個目錄,便會呼叫引數

*fn定義的函式來處理。

nftw()

會傳四個引數給

fn().

第乙個引數

*file

指向當時所在的目錄路徑,第二個引數是

*sb,

為stat

結構指標(結構定義請參考

stat()

),第三個引數為旗標,有底下幾種可能值

:ftw_f                        

一般檔案

ftw_d                        

目錄ftw_dnr                     

不可讀取的目錄。此目錄以下將不被遍歷

ftw_sl                        

符號連線

ftw_ns                        

無法取得

stat

結構資料,在可能是許可權問題

ftw_dp                        

目錄,而且子目錄都已被遍歷過了

ftw_sln                       

符號連線,但連線不存在的檔案

fn()

的第四個引數是

ftw結構,定義如下:

struct  ftw

nftw()

第三個引數

depth

代表nftw()

在進行遍歷目錄時可同時開啟的檔案數。

ftw()

在遍歷時每一層目錄至少需要乙個檔案描述詞,如果遍歷時用完了

depth

所給予的限制數目,整個遍歷將因不斷地關檔案和開檔案操作而顯得的緩慢

nftw()

最後乙個引數

flags

用來指定遍歷時的動作,可指定下列的操作或用

or組合

ftw_chdir                 

在讀目錄之前先用

chdir()

移到此目錄

ftw_depth               

執行深度優先搜尋。在遍歷此目錄前先將所有子目錄遍歷完

ftw_mount               

遍歷時不要跨越到其他檔案系統

ftw_phys                  

不要遍歷符號連線的目錄。缺省會遍歷符號連線目錄

如果要結束

nftw()

的遍歷,

fn()

只需返回一非

0值即可,此值同時也會是

nftw()

的返回值。否則

nftw()

會試著遍歷完所有目錄,然後返回0返

回值:遍歷中斷則返回

fn()

函式的返回值,

全部遍歷完則返回

0,若有錯誤發生則返回

-1

cmd for 遍歷目錄 python 遍歷目錄樹

假定你希望對某個資料夾中的所有檔案改名,包括該資料夾中所有子資料夾中 的所有檔案。也就是說,你希望遍歷目錄樹,處理遇到的每個檔案。寫程式完成這 件事,可能需要一些技巧。好在,python 提供了乙個函式,替你處理這個過程。請看 c delicious 資料夾及其內容,如圖所示。這裡有乙個例子程式,針...

php 禁止遍歷目錄,php無限遍歷目錄

以上就介紹了php無限遍歷目錄,包括了方面的內容,希望對php教程有興趣的朋友有所幫助。用的函式有 isset 判斷某個變數是否定義chdir 將當前目錄改變為指定的目錄。opendir 開啟目錄。readdir 讀取目錄。getcwd 獲取當前目錄。還用到了for if get傳值 大概就這些東東...

shell遍歷目錄

bin bash list alldir if gt 0 then list alldir 1 else list alldir fi root gbackup1 zhaoyj chmod x bianli.sh root gbackup1 zhaoyj bianli.sh home sysadmi...