高級編程之目錄(二)

目 錄 操 作

 

   打開目錄 ===》遍歷目錄 ===》切換目錄 ===》關閉目錄

   opendir() ===>readdir()/chdir() ====>closedir()

頭文件:
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>


原型:DIR *opendir(const char *name);
功能: 從指定的name路徑+目錄名下打開該目錄
參數: name 要打開的目錄所在路徑+目錄名稱
返回值:成功  目錄流對象,DIR * 結構體指針
  失敗  NULL


原型:struct dirent *readdir(DIR *dirp);
功能:從已經打開的目錄流對象drip中獲取一個文件信息。
參數:dirp 已經打開的流對象
返回值: 成功 返回一個文 件結構體,重點是d_name 成員變量,表示文件名稱。
   失敗或者目錄流結尾 NULL 


原型:int chdir(const char *path);
功能:將程序的執行目錄修改爲指定的path路徑
參數:path 新的工作目錄
返回值:成功  0
     失敗  -1


原型:int closedir(DIR *dirp);
功能:關閉指定的目錄流對象
參數:dirp 要關閉的流對象
返回值: 成功 0
  失敗 -1;
注意:closedir 不能關閉多次,否則段錯誤。


2、文件屬性操作  ===>stat 命令對應的 函數

頭文件
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

原型:int stat(const char *path, struct stat *buf);
功能:從指定的path路徑+文件名稱獲取文件屬性信息到buf對象中。
參數:path 要打開的文件路徑+名稱
      buf  文件屬性結構體
返回值:成功  0
  失敗 -1;

注意:如果要獲取鏈接文件的屬性信息用  lstat函數
   如果文件已經被open函數打開,可用fstat函數獲取其信息。

 

文件類型:

普通文件    -
目錄文件    d
鏈接文件    l   /dev/stdin

字符設備文件  c  /dev/tty
塊設備文件    b  /dev/sda

套接子文件    s  /dev/log
管道文件      p

用戶信息獲取:/etc/passwd   =>id  == name

1、getpwuid()  ===>函數得到如下信息:

  頭文件: pwd.h
  函數: getpwuid()
  結構體:   struct passwd *


2 用戶組信息 
  struct group *getgrgid(gid_t gid);

文件的大小:

buf.st_size 

3、時間函數  ===> time()  localtime()  asctime()

頭文件:
#include <time.h>

原型:time_t time(time_t *t);
功能:獲取當前系統時間與格林尼治時間之間的秒數。
參數:t 要獲取的時間結構體,如果是NULL 則表示默認當前時間。
        如果是變量則在變量中存儲秒數。
返回值:如果參數是NULL ,則用該返回值表示獲取的秒數/
  如果參數不是NULL,則一般用參數獲取秒數/

原型:struct tm *localtime(const time_t *timep);
功能:將指定的timep秒數的數據值轉換成struct tm 類型的時間結構體。
參數:timep 之前通過time函數或已知的時間秒數。
返回值:成功  時間結構體
  失敗  NULL


原型:char *asctime(const struct tm *tm);
功能:將指定的時間結構體直接轉換成時間字符串。
參數: tm 經過localtime 函數轉換的結構
返回值:成功 最終地時間結構體
  失敗  NULL

練習: 綜合以上知識點,完成如下功能:
   設計一個程序,可以通過住函數傳參的方式打印輸出該文件的
  所有屬性信息,如果該文件是目錄則輸出目錄中包含的文件屬性信息。
  比如:
  ./a.out abc  ===>普通文件abc的屬性信息輸出
  ./a.out ./   ===>當前目錄的所有文件屬性信息遍歷輸出。


4、IO 總結

源碼方式安裝軟件:

1、下載源碼包  xxx.tar    xxx.tar.gz
2、解壓縮  tar -xvf xxx.tar    tar -zxvf xxx.tar.gz
3、切換目錄  cd  xxxx
4、配置環境  ./configure
5、生成可執行程序  make
6、安裝     make install

ctags 的使用:

1、進入系統目錄   cd   /usr/include
2、生成tags文件   ctags -R *
3、在當前目錄中追查變量或者結構體
   vi -t  xxx
4、 如果定位的結果已經顯示的是基本數據類型,則表示追蹤截至。

 如果第一次沒有定位到變量的基本數據類型,則用ctrl+] 向下追查
 要求光標必須在要追查的類型的原始定義處。

 如果要向後回退則用ctrl+t 回退一次。
5、用 :q 退出vi

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章