亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 操作系統 > 正文

文件和目錄之stat、fstat和lstat函數

2024-06-28 13:28:50
字體:
來源:轉載
供稿:網友
文件和目錄之stat、fstat和lstat函數
#include <sys/stat.h>int stat( const char *restrict pathname, struct stat *restrict buf );int fstat( int filedes, struct stat *buf );int lstat( const char *restrict pathname, struct stat *restrict buf );三個函數的返回值:若成功則返回0,若出錯則返回-1

關于上面函數聲明中的restrict關鍵字的解釋,可參考:http://blog.csdn.net/lovekatherine/article/details/1891806(具體如下)

今天讀APUE,看到某個函數原型的聲明:

int stat (  const char * restrict  pathname,struct stat * restrict buf);

這里的restrict讓我覺得有些疑惑,一查原來是C99中增加的關鍵字那么restrict的意義是什么呢?

One of the new features in the recently apPRoved C standard C99, is the restrict pointer qualifier. This qualifier can be applied to a data pointer to indicate that, during the scope of that pointer declaration, all data accessed through it will be accessed only through that pointer but not through any other pointer. The 'restrict' keyWord thus enables the compiler to perform certain optimizations based on the premise that a given object cannot be changed through another pointer. Now you're probably asking yourself, "doesn't const already guarantee that?" No, it doesn't. The qualifier const ensures that a variable cannot be changed through a particular pointer. However, it's still possible to change the variable through a different pointer.

概括的說,關鍵字restrict只用于限定指針;該關鍵字用于告知編譯器,所有修改該指針所指向內容的操作全部都是基于(base on)該指針的,即不存在其它進行修改操作的途徑;這樣的后果是幫助編譯器進行更好的代碼優化,生成更有效率的匯編代碼。

舉個簡單的例子

int foo (int* x, int* y){*x = 0;*y = 1;return *x;}

很顯然函數foo()的返回值是0,除非參數x和y的值相同??梢韵胂?,99%的情況下該函數都會返回0而不是1。然而編譯起必須保證生成100%正確的代碼,因此,編譯器不能將原有代碼替換成下面的更優版本

int f (int* x, int* y){*x = 0;*y = 1;return 0;}

啊哈,現在我們有了restrict這個關鍵字,就可以利用它來幫助編譯器安全的進行代碼優化了

int f (int *restrict x, int *restrict y){*x = 0;*y = 1;return *x;}

此時,由于指針 x 是修改 *x的唯一途徑,編譯起可以確認 “*y=1; ”這行代碼不會修改 *x的內容,因此可以安全的優化為
int f (int *restrict x, int *restrict y){*x = 0;*y = 1;return 0;}

最后注意一點,restrict是C99中定義的關鍵字,C++目前并未引入;在GCC可通過使用參數" -std=c99"來開啟對C99的支持。

一旦給出pathname,stat函數就返回與此命名文件有關的信息結構。fstat函數獲取已在描述符filedes上打開的有關信息。lstat函數類似于stat,但是當命名的文件是一個符號鏈接時,lstat返回該符號鏈接的有關信息,而不是由該符號鏈接引用文件的信息。

第二個參數buf是指針,它指向一個我們必須提供的結構。這些函數填寫由buf指向的結構。該結構的實際定義可能隨實現有所不同,但其基本形式是:

struct stat{    mode_t     st_mode;    /* file type & mode (permissions) */    ino_t      st_ino;     /* i-node number (serial number) */    dev_t      st_dev;     /* device number (file system) */    dev_t      st_rdev;    /* device number for special files */    nlink_t    st_nlink;   /* number of links */    uid_t      st_uid;     /* user ID of owner */    gid_t      st_gid;     /* group ID of owner */    off_t      st_size;    /* size in bytes, for regular files */    time_t     st_atime;   /* time of last access */    time_t     st_mtime;   /* time of last modification */    time_t     st_ctime;   /* time of last file status change */    blksize_t  st_blksize; /* best I/O block size */    blkcnt_t   st_blocks;  /* number of disk blocks allocated */};

POSIX.1未要求st_rdev、st_blksize和st_blocks字段,Single UNIX Specification XSI擴展則定義了這些字段。

注意,該結構中的每一個成員都是基本系統數據類型。

使用stat函數最多的可能是ls -l命令,用其可以獲得有關一個文件的所有信息。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一本色道久久综合亚洲精品小说| 国产精品欧美久久久| 久久精品国产精品亚洲| 欧美综合激情网| 日韩精品福利在线| 91精品久久久久| 欧美成人精品一区| 永久免费看mv网站入口亚洲| 欧美寡妇偷汉性猛交| 日韩高清有码在线| 午夜精品国产精品大乳美女| 欧美亚洲国产日韩2020| 欧美国产日韩视频| 亚洲人午夜精品免费| 亚洲福利视频专区| 亚洲人成网站999久久久综合| 久久久久久久999| 精品久久久免费| 海角国产乱辈乱精品视频| 少妇高潮久久久久久潘金莲| 一区二区在线视频| 欧美怡红院视频一区二区三区| 91久久综合亚洲鲁鲁五月天| 国产精品va在线播放| 欧美日韩亚洲网| 日本一本a高清免费不卡| 色偷偷噜噜噜亚洲男人| 欧美激情视频一区| 亚洲视频在线视频| 久久中文字幕一区| 亚洲无限乱码一二三四麻| 国产极品jizzhd欧美| 亚洲成av人影院在线观看| 91综合免费在线| 久久成年人视频| 欧美与黑人午夜性猛交久久久| 日韩欧美在线看| 欧美人在线观看| 国内精品久久久久| 欧美激情xxxxx| 欧美精品www在线观看| 2023亚洲男人天堂| 日韩亚洲综合在线| 日本在线观看天堂男亚洲| 欧美大奶子在线| 亚洲国产成人精品电影| 久久精品视频在线| 疯狂做受xxxx高潮欧美日本| 日韩成人在线视频观看| 日韩av不卡在线| 欧美日韩中文字幕日韩欧美| 日本一区二区在线免费播放| 精品久久在线播放| 国外成人在线视频| 久久精品国产电影| 欧美性猛交xxxx富婆| 狠狠做深爱婷婷久久综合一区| 成人欧美一区二区三区在线| 亚洲国产精品国自产拍av秋霞| 97色在线观看免费视频| 中文字幕欧美精品日韩中文字幕| 色噜噜狠狠狠综合曰曰曰88av| 日韩高清不卡av| 中文字幕欧美日韩精品| 777精品视频| 国产精品国产三级国产aⅴ9色| 日韩成人激情在线| 亚洲午夜精品久久久久久性色| 尤物九九久久国产精品的分类| 日韩成人av在线播放| 久久色精品视频| 国产噜噜噜噜噜久久久久久久久| 国产裸体写真av一区二区| 蜜臀久久99精品久久久无需会员| 国产69精品久久久久久| 国产成人精品电影| 国产精品久久久久久久久久三级| 久久久久久国产精品久久| 亚洲精品成人久久电影| 国产精品欧美风情| 亚洲欧洲视频在线| 国产精品女视频| 中文字幕在线亚洲| 国产精品白嫩美女在线观看| 久久好看免费视频| 日韩av中文在线| 日本电影亚洲天堂| 欧美精品制服第一页| 日韩成人中文电影| 国产一区二区三区18| 亚洲精品av在线播放| 精品亚洲国产成av人片传媒| 97欧美精品一区二区三区| 亚洲人精选亚洲人成在线| 欧美视频中文在线看| 欧美日韩免费一区| 中文字幕精品一区二区精品| 欧美精品久久久久久久免费观看| 国产一区二中文字幕在线看| 国产精品久久久久久亚洲调教| 中国china体内裑精亚洲片| 91久久久久久久久| 久久久久久久久久久久久久久久久久av| 日韩视频免费看| 国产精品久久久久久婷婷天堂| 色偷偷噜噜噜亚洲男人| 美女国内精品自产拍在线播放| 国产成人精品在线视频| 日本欧美一级片| 国产精品成人一区| 亚洲精品wwww| 日本三级韩国三级久久| 中文字幕亚洲欧美日韩2019| 欧美日韩一区二区在线播放| 宅男66日本亚洲欧美视频| 黑丝美女久久久| 日韩中文字幕免费视频| 亚洲免费影视第一页| 啊v视频在线一区二区三区| 国产成人精品综合久久久| 精品久久在线播放| 激情av一区二区| 不用播放器成人网| 国内外成人免费激情在线视频网站| 久久久久久综合网天天| 国产欧美婷婷中文| 黑人巨大精品欧美一区二区三区| 国产午夜精品久久久| 91欧美激情另类亚洲| 亚洲一区二区三区视频| 97超碰色婷婷| 中文字幕精品一区二区精品| 欧美日韩在线视频一区二区| 92国产精品久久久久首页| 日韩精品在线影院| 亚洲一区亚洲二区亚洲三区| 一区二区三区 在线观看视| 66m—66摸成人免费视频| 国产精品无av码在线观看| 日韩激情第一页| 亚洲精品电影网| 高清欧美一区二区三区| 亚洲深夜福利在线| 国内揄拍国内精品少妇国语| 日韩精品在线私人| 最近中文字幕mv在线一区二区三区四区| 成人午夜两性视频| 77777少妇光屁股久久一区| 亚洲一区中文字幕在线观看| 欧美日韩在线视频一区二区| 7777kkkk成人观看| 久久免费福利视频| 中文字幕一区二区精品| 欧美一级电影在线| 91av国产在线| 国产欧美在线看| 亚洲欧洲午夜一线一品| 日韩av一区二区在线| 精品美女永久免费视频| 91免费综合在线| 乱亲女秽乱长久久久| 国产91在线播放精品91| 欧美午夜影院在线视频| 国产精品久久久久久久天堂|