找回密码
 注册
关于网站域名变更的通知
查看: 269|回复: 1
打印 上一主题 下一主题

linux - 讲解stat函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-10-9 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
表头文件:    #include <sys/stat.h>
& X, W( A' V8 V4 n  E! |
, j7 r- M2 A# u" \. O& q% Z5 @4 W            #include <unistd.h>
9 C3 _5 b1 S& t8 \( l
定义函数:    int stat(const char *file_name, struct stat *buf);

7 u& y9 f# e; B$ {2 @. z/ c- w2 i
函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中

% E! p; R9 t1 m% I
4 P7 n* Z5 Q5 X4 C返回值:     执行成功则返回0,失败返回-1,错误代码存于errno
: a. C  h- f9 h1 S- \! @6 j9 J+ f- c! C5 z
8 i! R* a8 t- X+ _$ X5 Y8 m
错误代码:
) ~. a1 {" v$ @+ F+ ]    ENOENT         参数file_name指定的文件不存在
! Z0 g) R. {6 |) w7 W" K! S    ENOTDIR        路径中的目录存在但却非真正的目录: L$ o; u3 f! T6 C; ~4 t- z
    ELOOP          欲打开的文件有过多符号连接问题,上限为16符号连接
% v9 t+ `5 K  j3 W* x+ Z( F    EFAULT         参数buf为无效指针,指向无法存在的内存空间. L* u( y9 w! y/ G* l( w. H
    EACCESS        存取文件时被拒绝2 L0 }. d& s+ K( {, A
    ENOMEM         核心内存不足* I. c$ m( ^$ I
    ENAMETOOLONG   参数file_name的路径名称太长% F9 r. Z# U$ t# n: r
5 F0 a! l; n1 O" t0 M$ z# g

# Y* `( I. k. q5 Z( p2 U. G#include <sys/stat.h>1 m6 T- C4 g9 S
#include <unistd.h>
3 A# C' W" Z' Y" l$ W7 h! }& S! p#include <stdio.h>
/ U2 N- I/ {! n1 a1 @; R4 w  {- x
int main() {: I0 L, f5 V8 A2 ~4 o) J
    struct stat buf;3 [% e! C3 I5 D
    stat("/etc/hosts", &buf);0 w2 P7 s% I/ }, I$ G
    printf("/etc/hosts file size = %d/n", buf.st_size);
* x2 N7 c# T7 j}, P, O6 T& |. D- \$ P: \
( H: B" K! P$ y& D" z' y4 C. ^

5 G6 B5 Z6 k: p) [-----------------------------------------------------
' {/ s! P9 V3 H. A' Hstruct stat {3 `7 G5 t" c# A6 P( ?  N
    dev_t         st_dev;       //文件的设备编号
; l0 f* n" c$ ^9 q/ m0 g) y    ino_t         st_ino;       //节点
7 d% K' h6 a* U6 D9 w    mode_t        st_mode;      //文件的类型和存取的权限
0 @8 G5 O4 _. r2 y    nlink_t       st_nlink;     //连到该文件的硬连接数目,刚建立的文件值为1# e1 C1 X+ Z. G$ @8 I" d
    uid_t         st_uid;       //用户ID$ L' [0 J" ~- G6 J$ D, ?" p. b
    gid_t         st_gid;       //组ID
/ T2 `/ F' I  T0 K/ X2 j2 x( W% c    dev_t         st_rdev;      //(设备类型)若此文件为设备文件,则为其设备编号6 Q4 M2 O3 N4 \& `9 x9 D; y. ^
    off_t         st_size;      //文件字节数(文件大小)
6 o' A* i# c2 s. {* t8 I    unsigned long st_blksize;   //块大小(文件系统的I/O 缓冲区大小)
% X4 Q. D% s' K8 V& F# s2 O0 X, _. O    unsigned long st_blocks;    //块数; t. [9 k+ d  \5 J( X3 k
    time_t        st_atime;     //最后一次访问时间
- |0 a3 U' P. P8 a: [9 _1 |; ?    time_t        st_mtime;     //最后一次修改时间
8 G, i( V$ A# Z    time_t        st_ctime;     //最后一次改变时间(指属性)/ B- S( h* T" _2 s( `
};
% Z4 U# ^$ ]3 O; m& q* e+ W/ o! b- g
8 U( S2 N, |& f9 e. G
先前所描述的st_mode 则定义了下列数种情况:
/ i# g, C% O4 W" j4 l4 g: t
游客,如果您要查看本帖隐藏内容请回复

3 }, ?9 v% }& n: S! x( J4 a
, z5 y3 O# {" w& @# |9 E" G, ^/ Y7 U& U6 e

+ _9 ^+ T! J# b/ q9 r
5 k1 u6 D1 I3 T; f# e2 d. \3 C
) g* {; Z7 o/ y  x  n! O

该用户从未签到

2#
发表于 2019-10-9 18:52 | 只看该作者
学习一下,谢谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-25 01:22 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表