|
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
|
|