2013-09-21 22 views
0

C程序是否有權查看某個目錄中的文件並與它們進行交互?例如,假設我通過system()函數使用wget下載了一個文件,並且我想查看該文件的名稱是什麼。有沒有什麼辦法可以通過標準的C庫或POSIX庫來實現?使用標準C庫或POSIX庫掃描UNIX目錄中的文件

+1

C標準庫沒有文件系統的概念,所以沒有。在Posix中,使用''。 –

+0

兩個標準函數是[stat()](http://linux.die.net/man/3/stat)和[readdir()](http://linux.die.net/man/3/readdir) 。 – paulsm4

+0

問題是,當你看到它時你將如何識別該文件?恕我直言,最好使用網絡庫,如libcurl(http://curl.haxx.se/libcurl/)將URL下載到您選擇的文件名中。 – rici

回答

1

這會查找修改時間少於5秒前目錄中的文件 - 沒有錯誤檢查。

#include <stdlib.h> 
#include <stdio.h> 
#include <sys/stat.h> 
#include <time.h> 
#include <dirent.h> 

void dirchk(const char *arg) // arg=name of directory 
{ 
    time_t when = time(NULL) -5; // 5 secs ago 
    struct stat st; 
    DIR *dirp=opendir(arg); 
    struct dirent *d=readdir(dirp); 
    while (d != NULL) 
    { 
     if ((d = readdir(dirp)) != NULL) 
     { 
      stat(d->d_name, &st); 
      if(when - st.st_mtime <=5) 
       printf("%s\n", d->d_name); 
     } 
    } 
    closedir(dirp); 
    return; 
} 

int main() 
{ 
    dirchk("."); 
    return 0; 
} 

「。」是當前的工作目錄。

+0

謝謝你的回答,我將讀到dirent.h和time()函數。 – dsplayer14