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

linux - 讲解stat函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
表头文件:    #include <sys/stat.h>
' R9 F8 L6 y0 f: ~& |; L4 L
# n" O. O8 ]$ ?# w            #include <unistd.h>

9 A3 }$ }; Z0 p3 G定义函数:    int stat(const char *file_name, struct stat *buf);
! r: D% C) `) X) V6 Q; r" Z9 T
: I  V  L% _$ X" G* H1 ]2 a
函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中
/ a. ^0 e1 X: `1 O# X% y- U

; {% J$ \; e. p返回值:     执行成功则返回0,失败返回-1,错误代码存于errno
1 H$ ^5 Y9 W! _  n
! P; H4 V! I. N/ H! L" G* b# f* u. m  g0 F! A- j0 L$ p# T  o
错误代码:+ N8 k$ s( K, c9 X% h. r% [
    ENOENT         参数file_name指定的文件不存在
, j: j: G" R; l# h$ l* s& x0 V& ?. J) {+ f    ENOTDIR        路径中的目录存在但却非真正的目录
6 |- g- ?& ^. j3 n    ELOOP          欲打开的文件有过多符号连接问题,上限为16符号连接) D* U2 y; _2 b/ E+ W% J  F
    EFAULT         参数buf为无效指针,指向无法存在的内存空间  f1 L9 J6 [2 n$ Z$ D
    EACCESS        存取文件时被拒绝0 U* T) c6 \: e; d
    ENOMEM         核心内存不足
3 L7 a8 E% g/ ?! d0 n" {. f& v" X    ENAMETOOLONG   参数file_name的路径名称太长
/ v8 H+ I, ~( f& P; K" F
3 k3 d" f7 W' J8 C; j4 ^9 b
6 D8 i5 s: l) _5 |& I0 g#include <sys/stat.h>
; v5 C. ]- x" A1 e#include <unistd.h>" D; u" R" T% K1 ]8 W. V4 A7 I; E6 E
#include <stdio.h>
# a, A5 Q& F; a1 E* H5 `/ a) c, h  l, u
int main() {
" w. a% _' ]3 C    struct stat buf;
7 K  P) K6 h* k1 l; P2 f2 P    stat("/etc/hosts", &buf);$ @7 w/ j8 o, A' o9 }  Q
    printf("/etc/hosts file size = %d/n", buf.st_size);
( G7 I& X' ?( Z( o4 I* U}
8 I+ ]! L% @4 r2 G8 C4 `
9 J3 N0 z# a, G+ A# B4 N6 |) j4 m% e$ Q6 D7 \% \% L
-----------------------------------------------------
$ p- r: @1 h9 _8 b! jstruct stat {
2 ]; J. Z3 @; I4 _0 k" D    dev_t         st_dev;       //文件的设备编号
( J! o' r3 A! y. Q    ino_t         st_ino;       //节点1 M0 L6 B+ ~! Z+ v* u. ~
    mode_t        st_mode;      //文件的类型和存取的权限, U: I" D3 L  j
    nlink_t       st_nlink;     //连到该文件的硬连接数目,刚建立的文件值为1; l3 f5 S/ f: s
    uid_t         st_uid;       //用户ID/ }) w7 i2 @) N& o$ Y) y
    gid_t         st_gid;       //组ID
5 B2 D; I  {% d6 u( W; e    dev_t         st_rdev;      //(设备类型)若此文件为设备文件,则为其设备编号
( o  J' D: e3 h7 Q* y6 x6 B" d    off_t         st_size;      //文件字节数(文件大小)
$ l1 A6 P* |+ b; U4 O6 a+ [! R7 H    unsigned long st_blksize;   //块大小(文件系统的I/O 缓冲区大小)+ z1 ~) {4 q3 h
    unsigned long st_blocks;    //块数
' q9 i; [& @( ^9 }9 [0 ~: E) M    time_t        st_atime;     //最后一次访问时间
2 E5 B' o# m. s    time_t        st_mtime;     //最后一次修改时间4 h, V% q$ ~  u# [4 n- x, t
    time_t        st_ctime;     //最后一次改变时间(指属性). N# ~9 w! v6 w. ~: o
};' D% F: ?7 T) h& c; V8 l1 a

" N  J/ N, K8 \8 q' s6 h8 [( D- a
# ?7 B2 d$ B6 Q先前所描述的st_mode 则定义了下列数种情况:

9 s/ m5 t. w* S, d# y
游客,如果您要查看本帖隐藏内容请回复

# q$ w8 a) a' A5 n" w' P3 @* n
; Y, C) T8 X* L# D/ a8 T: C( Q) |8 H0 s' f1 t" R+ R/ X7 d
7 p: E6 }" I6 {( J- O- Z
9 M% ]# E8 c* b# Y% `
5 k! k4 n# G* X

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 08:36 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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