stat函數

int lstat(const char *path,struct stat*buf)

當文件是一個符號鏈接時,lstat返回的是該符號鏈接本身的信息,而stat返回的是該鏈接指向的文件的信息。

struct stat
{dev_t        st_dev;        //設備號碼ino_t        st_ino;        //inode節點號mode_t        st_mode;        //文件對應的模式,文件,目錄,sock,管道等等nlink_t        st_nlink;        //文件的連接數          軟連接或硬鏈接uid_t        st_uid;        //文件所有者gid_t        st_gid;        //文件所有者對應的組dev_t        st_rdev;        //特殊設備號碼off_t         st_size;        //普通文件,對應的文件字節數timestruc_t    st_atim;        //文件最后被訪問的時間timestruc_t    st_mtim;        //文件內容最后被修改的時間timestruc_t    st_ctim;        //文件狀態改變時間blksize_t        st_blksize;    //文件內容對應的塊blkcnt_t         st_blocks;    //文件內容對應的塊數量char         st_fstype[_ST_FSTYPSZ];
};

stat結構體中的st_mode則定義了下列數種情況

?????? ??????

S_IFMT??

0170000

文件類型的位遮罩

S_IFSOCK

0140000

socket

S_IFLNK

0120000

符號鏈接

S_IFREG

0100000

一般文件

S_IFBLK

0060000

區塊裝置

S_IFDIR

0040000

目錄

S_IFCHR

0020000

字符裝置

S_IFIFO

0010000

先進先出

S_ISUID

04000

文件的(set user-id on execution)位

S_ISGID

02000

文件的(set group-id on execution)位

S_ISVTX

01000

文件的sticky位

S_IRUSR(S_IREAD)

00400

文件所有者具有可讀權限

S_IWUSR(S_IWRITE)

00200

文件所有者具有可寫權限

S_IXUSR(S_IEXEC)

00100

文件所有者具有可執行權限

S_IRGRP

00040

用戶組具有可讀權限

S_WGRP

00020

用戶組具有可寫權限

S_IXGRP

00010

用戶組具有可執行權限

S_IROTH

00004

其他用戶具有可讀權限

S_IWOTH

00002

其他用戶具有可寫權限

S_IXOTH

00001

其他用戶具有可執行權限

?

上述文件類型在POSIX中定義了檢查這些類型的宏定義

S_ISLNK (st_mode)

判斷是否為符號鏈接

S_ISREG (st_mode)

判斷是否為一般文件

S_ISDIR(st_mode)

是否為目錄

S_ISCHR(st_mode)

是否為字符裝置文件

S_ISBLK(st_mode)

是否為先進先出

S_ISSOCK(st_mode)

是否為socker

若一般目錄具有sticky位(S_ISVTX),則表示在此目錄下的文件只能被該文件所有者、此目錄所有者或root來輸出或改名,在linux中,最典型的就是/tmp目錄了。

?

轉載于:https://www.cnblogs.com/wanghao-boke/p/11599689.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/384814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384814.shtml
英文地址,請注明出處:http://en.pswp.cn/news/384814.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

字符串函數參數傳入傳出(字符串反轉)

/*** strstr.c ***/ #include<stdio.h> #include<string.h>//求字符串p中abcd出現的次數 //自定義函數接口完成業務函數和main函數分開 int getCount(char *mystr,char *sub,int *ncount) {int ret 0;if(mystr NULL || sub NULL || ncount NULL){ret -1;print…

字符串函數參數傳入傳出(去空格)

字符串作為函數參數傳入傳出 /*** delSpace.c ***/ #include<stdio.h> #include<string.h>int DelSpace(char *str) {int iRet -1;int i ;int j ;int ncount 0;char *out str;if(NULL str ){printf("the point in is NULL\n");return iRet;}i 0;j …

字符串的規范使用

有一個字符串”1a2b3d4z”,&#xff1b; 要求寫一個函數實現如下功能&#xff0c; 功能1&#xff1a;把偶數位字符挑選出來&#xff0c;組成一個字符串1。valude&#xff1b;20分 功能2&#xff1a;把奇數位字符挑選出來&#xff0c;組成一個字符串2&#xff0c;valude 20 功能…

字符串的規范使用(二)

鍵值對&#xff08;”key valude”&#xff09;字符串&#xff0c;在開發中經常使用&#xff1b; 要求1&#xff1a;請自己定義一個接口&#xff0c;實現根據key獲取valude&#xff1b;40分 要求2&#xff1a;編寫測試用例。30分 要求3&#xff1a;鍵值對中間可能有n多空格&am…

字符串逆序打印

版本1 兩個指針從頭到尾和從尾到頭交換內容逆序 /*** str_reverse.c ***/ #include<stdio.h> #include<string.h>int main() {char buf[] "abcdrfg";int len strlen(buf);char *p1 buf;char *p2 buf len - 1;while(p1 < p2){char c *p1;*p1 *p…

realloc()函數

原型&#xff1a;extern void *realloc(void *mem_address, unsigned int newsize); 參數&#xff1a; mem_address&#xff1a; 要改變內存大小的指針名newsize &#xff1a; 新的內存大小。 如果分配內存減少&#xff0c;realloc僅僅改變索引的信息。 如果將…

fgets()函數

聲明&#xff1a;  char *fgets(char *str&#xff0c;int n,FILE* stream) 參數&#xff1a;  str—這是指向一個字符數組的指針&#xff0c;該數組存儲了要讀取的字符串 n – 這是要讀取的最大字符數&#xff08;包括最后的空字符&#xff09;。通常是使用以str傳遞的數組…

C語言實現文件類型統計函數

#include<dirent.h> #include<limits.h> #include<sys/stat.h> #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<string.h>#define FTW_F 1 //標記非目錄文件 #define FTW_D 2 //標…

C語言實現多線程排序

#include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <string.h>/* 聲明變量 */ int array_length, file_length; int *array_master; FILE *freader;/* 用于從文件讀取數據 */ int *read_file(char *fname) {freader fopen(fnam…

linux線程操作

初始化條件變量 int pthread_cond_init(pthread_cond_t *cv,pthread_cond_attr *cattr); 函數返回值&#xff1a;返回0表示成功&#xff0c;返回其他表示失敗。 參數&#xff1a; pthread_cond_attr是用來設置pthread_cond_t的屬性&#xff0c;當傳入的值是NULL的時候表…

Linux下多線程模擬停車場停車

#include<stdio.h> #include<string.h> #include<unistd.h> #include<stdlib.h> #include<pthread.h>#define ONE_SECOND 1000000 #define RANGE 10 #define PERIOD 2 #define NUM_THREADS 4typedef struct {int *carpark; //用一個數組來模…

【C++學習之路】第一章——C++核心方法總論

1 C核心方法總論 1.1 核心思想 通過實際項目來學習編程&#xff0c;更高效掌握編程規則&#xff0c;以及明白各種語法規則的實際應用。 實驗思想&#xff1a;任何C的參考資料都不可能覆蓋你遇到的所有問題&#xff0c;這個時候&#xff0c;最好的辦法就是&#xff0c;編輯代…

【Verilog HDL學習之路】第一章 Verilog HDL 數字設計總論

1 Verilog HDL 數字設計總論 1.1 幾個重要的概念 EDA&#xff08;Electronic Design Automation&#xff09; 電子技術自動化 EDA工具 類似于軟件工程中的IDE&#xff08;集成開發環境&#xff09;&#xff0c;能夠使用Verilog HDL語言描述電路設計&#xff0c;并且能夠通過邏…

【學會如何學習系列】從嬰兒到大學——學習的本質從未改變過

從嬰兒到大學——學習的本質從未改變過 從我們出生一直到現在&#xff0c;其實&#xff0c;學習的本質從來都沒有改變過&#xff0c;并且&#xff0c;嬰兒時期的我們&#xff0c;是學習能力最強的時候&#xff0c;隨著我們不斷長大&#xff0c;外界的誘惑越來越多&#xff0c;…

【匯編語言學習之路】第一章 匯編語言核心方法論

版權聲明&#xff1a;本學習筆記是本人根據小甲魚“匯編語言學習課程”和《匯編語言》&#xff08;王爽&#xff09;的書籍&#xff0c;來記錄筆記的 1 匯編語言核心方法論 1.1 學習匯編語言的必要性 匯編語言與機器語言是一一對應關系&#xff0c;它的本質是機器語言的代號。…

藍橋單片機賽題及模擬題代碼

鏈接&#xff1a;https://pan.baidu.com/s/1BVB6VILEed0ufqRDMhvALg 提取碼&#xff1a;ukx7

【Verilog HDL學習之路】第二章 Verilog HDL的設計方法學——層次建模

2 Verilog HDL的設計方法學——層次建模 重要的思想&#xff1a; 在語文教學中&#xff0c;應該先掌握核心方法論&#xff0c;再用正確的方法論去做題目&#xff0c;這樣能夠逐漸加深對于方法論的理解&#xff0c;做題的速度和準確率也會越來越高。在Verilog HDL中&#xff0c…

stm32機械臂資料含視頻

這是在網上買的機械臂的資料 含視頻及相關軟件 在這里分享給大家 不過很大 但是內容很全 鏈接&#xff1a;https://pan.baidu.com/s/1Fd18ww8jxLH8ChqomstZtw 提取碼&#xff1a;147g

【Verilog HDL】第四章 模塊的端口連接規則——污水處理模型

先放上連接規則的簡圖&#xff0c;再詳細解釋 1. 構建模型——污水處理之流水模型 我們先將上述結構構件一個簡單模型&#xff0c;以幫助我們理解。 污水&#xff1a;輸入數據凈水&#xff1a;輸出數據雙向數據暫不討論&#xff0c;取輸入和輸出的交集即可污水處理廠&…

藍橋杯嵌入式第七屆模擬題 代碼

鏈接&#xff1a;https://pan.baidu.com/s/1fdGC20A51axxPGpoyRL8-w 提取碼&#xff1a;by4u