#include <time.h>#include <sys/types.h>#include <sys/stat.h>#include <stdio.h>#include <errno.h> int main( void ){ struct _stat buf; int result; char timebuf[26]; char* filename = "C:\\WINDOWS"; errno_t err; // Get data associated with "crt_stat.c": result = _stat( filename, &buf ); // Check if statistics are valid: if( result != 0 ) { perror( "Problem getting information" ); switch (errno) { case ENOENT: printf("File %s not found.\n", filename); break; case EINVAL: printf("Invalid parameter to _stat.\n"); break; default: /* Should never be reached. */ printf("Unexpected error in _stat.\n"); } } else { if(buf.st_mode&_S_IFDIR) printf( "File specifies a directory\n"); else printf( "File not a directory\n"); // Output some of the statistics: printf( "File size : %ld\n", buf.st_size ); printf( "Drive : %c:\n", buf.st_dev + 'A' ); err = ctime_s(timebuf, 26, &buf.st_mtime); if (err) { printf("Invalid arguments to ctime_s."); exit(1); } printf( "Time modified : %s", timebuf ); }}
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); //通过连接文件描述命,获取文件属性。 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; //伟建内容对应的块数量 };