1
我試圖讓使用nftw
用下面的代碼目錄樹中的所有.c文件:nftw不同於BSD?
static int gf(const char *path, const struct stat *st, int t, struct FTW *ftw) {
if (t != FTW_F)
return 0;
if (strcmp(ext(path), ".c") == 0)
addl(&files, dup(abspath(path)));
return 0;
}
void getfiles(char *path) {
nftw(path, gf, 255, FTW_PHYS);
}
它適用於Linux和Solaris,但對PC-BSD通過簡單的不拾取任何失敗文件。我錯過了什麼?
您是否真的對strdup使用過名稱「dup」?這似乎是一場等待發生的災難! dup2是否複製兩個字符串? –
我正在做我自己的字符串內存管理; dup是一個函數,除了沒有通用內存管理器的開銷外,它基本上和strdup完成同樣的工作。但即使在該函數中有一個錯誤,它也不會解釋觀察到的行爲,因爲我運行的測試基本上只檢查是否曾經調用過addl。 – rwallace
但dup是一個可怕的名字,因爲這是複製文件描述符的標準庫函數。 –