stat函数

简介:


一.概述:

表头文件:    #include <sys/stat.h>
             #include <unistd.h>
定义函数:    int stat(const char *file_name, struct stat *buf);
函数说明:    通过文件名filename获取文件信息,并保存在buf所指的结构体stat中
返回值:      执行成功则返回0,失败返回-1,错误代码存于errno

错误代码:
    ENOENT         参数file_name指定的文件不存在
    ENOTDIR        路径中的目录存在但却非真正的目录
    ELOOP          欲打开的文件有过多符号连接问题,上限为16符号连接
    EFAULT         参数buf为无效指针,指向无法存在的内存空间
    EACCESS        存取文件时被拒绝
    ENOMEM         核心内存不足
    ENAMETOOLONG   参数file_name的路径名称太长





二.struct stat结构体:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
struct  stat {
     dev_t         st_dev;        //文件的设备编号
     ino_t         st_ino;        //节点
     mode_t        st_mode;       //文件的类型和存取的权限
     nlink_t       st_nlink;      //连到该文件的硬连接数目,刚建立的文件值为1
     uid_t         st_uid;        //用户ID
     gid_t         st_gid;        //组ID
     dev_t         st_rdev;       //(设备类型)若此文件为设备文件,则为其设备编号
     off_t         st_size;       //文件字节数(文件大小)
     unsigned  long  st_blksize;    //块大小(文件系统的I/O 缓冲区大小)
     unsigned  long  st_blocks;     //块数
     time_t         st_atime;      //最后一次访问时间
     time_t         st_mtime;      //最后一次修改时间
     time_t         st_ctime;      //最后一次改变时间(指属性)
};
 
先前所描述的st_mode 则定义了下列数种情况:
     S_IFMT   0170000    文件类型的位遮罩
     S_IFSOCK 0140000    scoket
     S_IFLNK 0120000     符号连接
     S_IFREG 0100000     一般文件
     S_IFBLK 0060000     区块装置
     S_IFDIR 0040000     目录
     S_IFCHR 0020000     字符装置
     S_IFIFO 0010000     先进先出
 
     S_ISUID 04000     文件的(set user-id on execution)位
     S_ISGID 02000     文件的(set group-id on execution)位
     S_ISVTX 01000     文件的sticky位
 
     S_IRUSR(S_IREAD) 00400     文件所有者具可读取权限
     S_IWUSR(S_IWRITE)00200     文件所有者具可写入权限
     S_IXUSR(S_IEXEC) 00100     文件所有者具可执行权限
 
     S_IRGRP 00040             用户组具可读取权限
     S_IWGRP 00020             用户组具可写入权限
     S_IXGRP 00010             用户组具可执行权限
 
     S_IROTH 00004             其他用户具可读取权限
     S_IWOTH 00002             其他用户具可写入权限
     S_IXOTH 00001             其他用户具可执行权限
 
     上述的文件类型在POSIX中定义了检查这些类型的宏定义:
     S_ISLNK (st_mode)    判断是否为符号连接
     S_ISREG (st_mode)    是否为一般文件
     S_ISDIR (st_mode)    是否为目录
     S_ISCHR (st_mode)    是否为字符装置文件
     S_ISBLK (s3e)        是否为先进先出
     S_ISSOCK (st_mode)   是否为socket










本文转自 ye小灰灰  51CTO博客,原文链接:http://blog.51cto.com/10704527/1785604,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
关系型数据库 Unix Shell
File - os.tcsetpgrp(fd, pg)函数
`os.tcsetpgrp(fd, pg)` 函数在进行进程控制和信号管理时非常有用,但它涉及Unix底层的工作原理,因此使用时需具备相应知识,以确保正确和适用,并注意相关的权限和错误处理。
148 61
|
6月前
|
安全 Linux
使用 stat命令查看文件信息
使用 stat命令查看文件信息
126 0
|
7月前
|
算法 Unix Linux
select函数中的文件描述符(File Descriptor)范围
select函数中的文件描述符(File Descriptor)范围
95 0
select函数中的文件描述符(File Descriptor)范围
|
Shell C++
C++中的exec()函数
exec()函数在C++中是一个进程控制函数,用于创建新进程执行其他程序或命令行指令。exec()函数可以替换当前进程的代码和数据,创建新的进程运行其他程序。exec()函数有多个版本,例如execl、execv、execle、execve等,根据不同的参数类型和个数来使用。
180 0
系统编程之文件IO(六)——获取文件属性(stat、fstat、lstat、struct stat)
系统编程之文件IO(六)——获取文件属性(stat、fstat、lstat、struct stat)
159 0
系统编程之文件IO(六)——获取文件属性(stat、fstat、lstat、struct stat)
|
Ubuntu
stat()函数、fstat()函数和lstat()函数
stat()函数、fstat()函数和lstat()函数
164 0
|
存储 数据安全/隐私保护 开发者
Stat 结构体 | 学习笔记
快速学习 Stat 结构体
119 0
|
SQL 存储 关系型数据库
|
SQL 关系型数据库 开发工具