小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用stat函數(shù),獲取文件屬性

 lchjczw 2013-01-23

#include<sys/types.h>

#include<sys/stat.h>

#include<unistd.h>

intstat(const char*path,structstat *buf);

intfstat(intfd,structstat *buf);

intlstat(const char*path,structstat *buf);


這三個(gè)函數(shù)的區(qū)別是:

stat用于獲取有參數(shù)file_name指定的文件名的狀態(tài)信息,保存在參數(shù)structstat *buf中。fstat于stat的區(qū)別在于fstat是通過(guò)文件描述符來(lái)指定文件,也就是通過(guò)open函數(shù)所返回獲得的fd。lstat與stat 的區(qū)別在于,對(duì)于符號(hào)鏈接文件,lstat返回的是符號(hào)鏈接文件本身的狀態(tài)信息,而stat返回的是符號(hào)鏈接指向的文件狀態(tài)信息。

參數(shù) structstat *buf是一個(gè)保存文件狀態(tài)信息的結(jié)構(gòu)體

 文件對(duì)應(yīng)的屬性
   struct stat {
        mode_t     st_mode;       //文件對(duì)應(yīng)的模式,文件,目錄等
        ino_t      st_ino;       //inode節(jié)點(diǎn)號(hào)
        dev_t      st_dev;        //設(shè)備號(hào)碼
        dev_t      st_rdev;       //特殊設(shè)備號(hào)碼
        nlink_t    st_nlink;      //文件的連接數(shù)
        uid_t      st_uid;        //文件所有者
        gid_t      st_gid;        //文件所有者對(duì)應(yīng)的組
        off_t      st_size;       //普通文件,對(duì)應(yīng)的文件字節(jié)數(shù)
        time_t     st_atime;      //文件最后被訪問(wèn)的時(shí)間
        time_t     st_mtime;      //文件內(nèi)容最后被修改的時(shí)間
        time_t     st_ctime;      //文件狀態(tài)改變時(shí)間
        blksize_t st_blksize;    //文件內(nèi)容對(duì)應(yīng)的塊大小
        blkcnt_t   st_blocks;     //偉建內(nèi)容對(duì)應(yīng)的塊數(shù)量
      };
可以通過(guò)上面提供的函數(shù),返回一個(gè)結(jié)構(gòu)體,保存著文件的信息。

接下來(lái)只用調(diào)用這個(gè)函數(shù)來(lái)獲得文件的屬性,代碼如下:

#include<stdio.h>

#include<time.h>

#include<sys/stat.h>

#include<unistd.h>

#include<sys/types.h>

#include<errno.h>

intmain(intargc,char*argv[])

{

   structstat buf;

   //檢查參數(shù)

   if(argc != 2) {

        printf("Usage: my_stat <filename>\n");

        exit(0);

    }

   //獲取文件屬性

   if( stat(argv[1], &buf) == -1 ) {

        perror("stat:");

        exit(1);

    }

   //打印出文件屬性

    printf("device is: %d\n", buf.st_dev);

    printf("inode is: %d\n", buf.st_ino);

    printf("mode is: %o\n", buf.st_mode);

    printf("number of hard links  is: %d\n", buf.st_nlink);

    printf("user ID of owner is: %d\n", buf.st_uid);

    printf("group ID of owner is: %d\n", buf.st_gid);

    printf("device type (if inode device) is: %d\n", buf.st_rdev);

    printf("total size, in bytes is: %d\n", buf.st_size);

    printf(" blocksize for filesystem I/O is: %d\n", buf.st_blksize);

    printf("number of blocks allocated is: %d\n", buf.st_blocks);

    printf("time of last access is: %s", ctime(&buf.st_atime));

    printf("time of last modification is: %s", ctime(&buf.st_mtime));

    printf("time of last change is: %s", ctime(&buf.st_ctime));

   return0;

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多