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的核心資訊,當緩衝區達到最大值時,新資訊會覆蓋掉舊的資訊,以保證資訊不會因為失控而消...