文件属性之stat(),fstat(),lstat(),chown(),fchown(),lchown()函数

1.stat(),fstat(),lstat()函数

这三个函数包含在头文件<sys/types.h><sys/stat.h><unistd.h>中 原型:int stat(const char *file_name,struct stat  *buf); int fstat(int filedes,struct stat  *buf); int lstat(const char  *file_name,struct  stat  *buf) ; 这 三个函数的区别是:stat用于由参数file_name指定的文件名的状态信息,保存在参数struct stat  *buf中,fstat 与stat的区别在于fstat是通过文件描述符,来指定文件,lstat与stat的区别是,对于符号链接文件,lstat返回的是符号链接文件本身的 状态信息,而stat返回的是符号链接指向的文件状态信息. 参数struct stat *buf是一个保存文件状态信息的结构体. struct   stat{ dev_t            st_dev;        //文件的设备编号 ino_t             st_ino;        //文件的i 节点 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;             //文件大小,对于符号链接,该大小是其所指向的文件名的长度; blksize_t         st_blksize;           //文件系统I/O缓冲区的大小; blkcnt_t              st_blocks;        //占用区块的个数,每一区块大小通常为512字节; time_t              st_atime; //文件最近一次被访问的时间; time_t            st_mtime;                 //文件最后一次被修改的时间,一般调用utime, 或write函数才会改变; time_t           st_ctime;                  //文件最近一次被更改的时间,此参数,在文件所有者,所属组,文件权限被更改时更新; 对于st_mode包含的文件类型信息,POSIX标准定义了一系列的宏. S_ISLNK(st_mode):判断是否为符号链接 S_ISREG:(st_mode):判断是否为一般文件; S_ISDIR(st_mode):判断是否为目录文件; S_ISCHR(st_mode):判断是否为字符设备文件; S_ISBLK(st_mode):判断是否为块设备文件; S_ISFIFO(st_mode):判断是否为先进先出的FIFO; S_ISSOCK(st_mode): 判断是否为socket;

2.chown(),fchown(),lchown()函数

这三个函数都包含在<sys/types.h>和<unistd.h> 原型:int chown(const char *path,uid_t owner,gid_t group); int fchown(int fd,uid_t owner,gid_t   group); int lchown(const char *path,uid_t  owner,gid_t  group); 函 数参数解析:chown会把pathz指定的文件的所有者id变更为参数owner代表用户的id,将文件所有者的组id 变更参数group组id,fchown和chown类似,只不过它是以文件描述符为参数的;lchown与chown功能相同,在某个文件是符号链接的 情下,lchown更改符号链接本身的所有者id,而不是该符号链接所指向的文件. 函数执行成功返回0,错误返回-1;

3.truncate(),ftruncate()

这两个函数包含在头文件<unistd.h>和<sys/types.h>中 原型:int truncate(const char *path,off_t length); int ftruncate(int fd,off_t length); 函 数参数解析:truncate将参数path指定的文件大小改为参数length指定的大小,如果原来的文件大小比参数length大,超过的被删除,文 件的扩展部分以0填充;如果文件文件的大小改变了,则文件的st_mtime,st_ctime域将会更新;函数执行成功返回0,错误返回-1;

4.utime()函数

这个函数包含在<sys/types.h>和<utime.h>中 原型:int utime(const char  *filename,struct utimbuf  *buf); #include <sys/time.h> int utime(char *filename,struct timeval *tvp); 参数struct  utimbuf  *buf的定义如下; struct utimbuf{ time_t actime;    //最近访问的时间 time_t   modtime     //修改的时间 }; 函 数参数解析:utime系统调用会把第一个参数fileanme指定的文件的存取时间改为第二个参数buf的atime域,把修改时间改为第二个参数 buf的modtime,如果buf是一个NULL,则存取时间和修改时间都改为当前时间.函数执行成功返回0,错误-1;

你可能感兴趣的:(文件属性之stat(),fstat(),lstat(),chown(),fchown(),lchown()函数)