stat、fstat和lstat函数(UNIX) #include #include int stat(const char *restrict pathname, struct stat *restrict buf); 供给文件姓名,获取文件对应特点。感受通常是文件没有翻开的时分这样操作。 int fstat(int filedes, struc http://www.goodk123.info/linked/20130312.do t stat *buf); 经过文件描绘符获取文件对应的特点。文件翻开后这样操作 int lstat(const char *restrict pathname, struct stat *restrict buf); 衔接文件 三个函数的回来:若成功则为0,若犯错则为-1 给定一个pathname,stat函数回来一个与此命名文件有关的信息布局,fstat函数取得已在描绘符filedes上翻开的文件的有关信息。lstat函数类似于stat,可是当命名的文件是一个符号衔接时,lstat回来该符号衔接的有关信息,而不是由该符号衔接引证的文件的信息。 第二个参数是个指针,它指向一个咱们应供给的布局。这些函数填写由buf指向的布局。该布局的实践界说能够随完成而有所不同,但其基本形式是: 函数都是获取文件(一般文件,目录,管道,socket,字符,块()的特点。 函数原型 #include int stat(const char *restrict pathname, struct stat *restrict buf); 供给文件姓名,获取文件对应特点。 int fstat(int filedes, struct stat *buf); 经过文件描绘符获取文件对应的特点。 int lstat(const char *restrict pathname, struct stat *restrict buf); 衔接文件描绘命,获取文件特点。 2 文件对应的特点 struct stat { mode_t st_mode; //文件对应的形式,文件,目录等 ino_t st_ino; //inode节点号 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函数解说 表头文件: #include #include 界说函数: 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的途径称号太长 #include #include #include int main() { struct stat buf; stat("/etc/hosts", http://www.haofapiao.com/linked/20130312.do