首页 > 编程知识 正文

linux实时时钟,shell错误输出重定向

时间:2023-05-03 06:50:03 阅读:12774 作者:3161

stat函数说明:

头文件: #包含

#包含

定义函数: 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核心内存不足

名称too long参数file_name的路径名太长

intstat(constchar*file_name,struct stat *buf );

intfstat(intfiledes,结构开始* buf );

stat结构在/usr/include/sys/stat.h文件中定义

struct stat finfo;

stat(sfilename,finfo );

int size=finfo. st_size;

结构启动{

模式_ t ST _ mode; //文件对应模式、文件、目录等

ino_t st_ino; //I节点编号

dev_t st_dev; //设备编号

dev_t st_rdev; //特殊设备编号

nlink_t st_nlink; //文件连接数

uid_t st_uid; //文件所有者

gid_t st_gid; //与文件所有者对应的组

off_t st_size; //普通文件,对应的文件字节数

time_t st_atime; //上次访问文件的时间

time_t st_mtime; //上次修改文件内容的时间

time_t st_ctime; //改变文件的状态(属性)时间

blksize_t st_blksize; //与文件内容对应的块大小

blkcnt_t st_blocks; //与文件内容对应的块数

(;

stat用于确定未打开的文件,而fstat用于确定打开的文件。 我们使用最多的属性是st_mode。 通过属性,可以判断给定的文件是普通文件还是目录、连接等。 可以使用以下几个宏来判断。

s_islnk(ST_mode ) :是否连接?

S_ISREG是普通文件吗?

S_ISDIR是否为目录

S_ISCHR是字符设备吗?

S_ISBLK是否为块设备

S_ISFIFO是FIFO文件吗?

S_ISSOCK是套接字文件吗?

使用方法:

//定义结构

结构启动m;

//用户输入的文件名(用于确定是否是目录)。

char *filename;

int a;

intn=stat(filename,m );

a=s_isdir(m.ST_mode );

如果a为true,则为目录,否则为目录。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。