linux 修改文件属性函数,linux 文件属性 stat函数

shell命令  ls -l

文件中操作

函数有stat  fstat stat,头文件及原型为:

#include

#include

#include

int stat(const char *path, struct stat *buf);

int fstat(int fd, struct stat *buf);

int lstat(const char *path, struct stat *buf);

区别:stat获取参数file_name指定的文件名的状态信息,结果保存在struct stat *buf中。

fstat通过文件描述符指定文件,,,,,

lstat返回的是符号链接文件本身的状态信息,而stat返回的是符号链接指向的文件状态信息。

stat和lstat的区别:当文件是一个符号链接时,lstat返回的是该符号链接本身的信息;而stat返回的是

该链接指向的文件的信息。(似乎有些晕吧,这样记,lstat比stat多了一个l,因此它是有本事处理符号

链接文件的,因此当遇到符号链接文件时,lstat当然不会放过。而 stat系统调用没有这个本事,它只能

对符号链接文件睁一只眼闭一只眼,直接去处理链接所指文件喽)

struct stat {

dev_t     st_dev;     /* ID of device containing file */

ino_t     st_ino;     /* inode number */

mode_t    st_mode;    /* protection */

nlink_t   st_nlink;   /* number of hard links */

uid_t     st_uid;     /* user ID of owner */

gid_t     st_gid;     /* group ID of owner */

dev_t     st_rdev;    /* device ID (if special file) */

off_t     st_size;    /* total size, in bytes */

blksize_t st_blksize; /* blocksize for file system I/O */

blkcnt_t  st_blocks;  /* number of 512B blocks allocated */

time_t    st_atime;   /* time of last access */

time_t    st_mtime;   /* time of last modification */

time_t    st_ctime;   /* time of last status change */

};

程序中获取文件属性实例:#include

#include

#include

#include

#include

#include

int main(int argc,char *argv[])

{

if(argc!=2)

{

printf("usage:my_stat \n");

exit(0);

}

//获取文件属性

if(stat(argv[1],&buf)==-1)

{

perror("stat:");

exit(1);

}

//打印参数

pirntf("device is :%d\n",buf.st_dev);

printf("inode is :%d\n",buf.st_ino);

............

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值