Linux獲取目錄資訊

2021-07-24 16:55:17 字數 2121 閱讀 4099

linux api

linux下c語言獲取某分割槽剩餘空間大小,可以直接使用系統提供的statfs直接獲取。**示例如下:

int get_system_tf_free(double *free)

#include

#include

#include

#include

int main()

注意:假設要讀取的目錄中有多個檔案,檔名分別為:1.bin, 2.bin, 3.bin,.....99.bin等

程式的讀取順序是這樣的:1.bin, 10.bin, 11.bin,....19.bin, 2.bin,        

20.bin,...,29.bin,....99.bin

而不是我們所期望的

1.bin, 2.bin, 3.bin,.....99.bin,可見檔案的讀取順序是與檔名有關係

的如果想判斷是否為資料夾或者檔案,則可以使用如下**:

struct stat info;

stat(path,&info);

if(s_isdir(info.st_mode))

printf("this is a directory"); 

stat結構及其域如下所示:

struct stat ;

如下的posix巨集用於檢測st_mode域的檔案型別:

s_isreg()   regular file?

s_isdir()   directory?

s_ischr()   character device?

s_isblk()   block device?

s_isfifo()  fifo (named pipe)?

s_islnk()   symbolic link?

s_issock()  socket?

注釋:**中的opendir函式和readdir函式如下所示:

opendir

(開啟目錄)

相關函式

open

,readdir,closedir,rewinddir,seekdir,telldir,scandir

表頭檔案

#include

#include

定義函式

dir * opendir(const char * name);

函式說明

opendir()

用來開啟引數name指定的目錄,並返回dir*形態的目錄流,和open()類似,接下來對目錄的讀取和搜尋都要使用此返回值。

返回值成功則返回dir* 型態的目錄流,開啟失敗則返回null。

錯誤**

eaccess 

許可權不足

emfile 

已達到程序可同時開啟的檔案數上限。

enfile 

已達到系統可同時開啟的檔案數上限。

enotdir 

引數name非真正的目錄

enoent 

引數name 指定的目錄不存在,或是引數name 為一空字串。

enomem 

核心記憶體不足。

readdir

(讀取目錄)

相關函式

open

,opendir,closedir,rewinddir,seekdir,telldir,scandir

表頭檔案

#include

#include

定義函式

struct dirent * readdir(dir * dir);

函式說明

readdir()

返回引數dir目錄流的下個目錄進入點。

結構dirent定義如下

struct dirent

;d_ino 

此目錄進入點的

inode

d_off 目錄檔案開頭至此目錄進入點的位移

d_reclen _name

的長度,不包含null字元

d_type d_name 

所指的檔案型別

d_name 

檔名 返回值

成功則返回下個目錄進入點。有錯誤發生或讀取到目錄檔案尾則返回null。

附加說明

ebadf

引數dir為無效的目錄流。

R 獲取檔案和目錄資訊

對於實現獲取檔案和目錄的資訊 設定檔案訪問許可權等功能,r有各種函式。file.info 引數是表示檔名稱的字串向量,函式會給出每個檔案的大小 建立時間 是否為目錄等資訊。dir 返回乙個字元向量,列出在其第乙個引數指定的目錄中所有檔案的名稱。如果指定可選引數recursive true,結果將把第...

Linux 獲取當前目錄

兩種方法 1.利用getcwd 函式取得當前工作目錄 相當於windows下的getcurrentdirectory 2.取得實際檔案目錄 相當於windows下的getmodulefilename 原理 每個程序在 proc下都有乙個以程序號命名的目錄。在該目錄下有exe檔案,該檔案是乙個鏈結檔案...

linux獲取核心資訊

linux獲取核心資訊過程 1.核心printk列印資訊會先根據等級與當前終端等級console loglevel決定是否向終端輸出列印,同時會將資訊儲存到乙個環形記錄緩衝區,該緩衝區最多可儲存log buf len的核心資訊,當緩衝區達到最大值時,新資訊會覆蓋掉舊的資訊,以保證資訊不會因為失控而消...