您的位置:首页 > 其它

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

2016-03-14 10:04 369 查看

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: