网站策划案4500,万网衡水网站备案,asp网站源代码,10m带宽做下载网站nt fstat(int filedes, struct stat *buf);
int stat(const char *path, struct stat *buf);
int lstat(const char *path, struct stat *buf);
一眼就能看出来fstat的第一个参数是和另外两个不一样的#xff0c;fstat区别于另外两个系统调用的地方在于#xff0c;fstat系…nt fstat(int filedes, struct stat *buf);
int stat(const char *path, struct stat *buf);
int lstat(const char *path, struct stat *buf);
一眼就能看出来fstat的第一个参数是和另外两个不一样的fstat区别于另外两个系统调用的地方在于fstat系统调用接受的是 一个“文件描述符”而另外两个则直接接受“
文件全路径”。文件描述符是需要我们用open系统调用后才能得到的而文件全路经直接写就可以了。
stat和lstat的区别当文件是一个符号链接时lstat返回的是该符号链接本身的信息而stat返回的是该链接指向的文件的信息。这样记lstat比stat多了一个l因此它是
有本事处理符号链接文件的因此当遇到符号链接文件时lstat当然不会放过。而 stat系统调用没有这个本事它只能对符号链接文件睁一只眼闭一只眼直接去处理链接所指
文件喽
/* * Linux文件属性结构体信息 * struct stat * { * dev_t st_dev;//设备 * ino_t st_ino;//结点 * mode_t st_mode;//模式 * nlink_t st_nlink;//硬连接 * uid_t st_uid;//用户ID * gid_t st_gid;//组ID * dev_t st_rdev;//设备类型 * off_t st_off;//文件字节数 * unsigned long st_blksize;//块大小 * unsigned long st_blocks;//块数 * time_t st_atime;//最后一次访问时间 * time_t st_mtime;//最后一次修改时间 * time_t st_ctime;//最后一次属性改变时间 * } * 可通过stat或fstat函数获得文件的其他属性 * stat函数用来判断没有打开的文件而fstat函数用来判断打开的文件。 * */ #include unistd.h #include sys/stat.h int main(void) { struct stat buf; stat(/etc/passwd,buf); /* * stat函数 * 取得文件的属性 * sys/stat.h,unistd.h * int stat(const char *file_name,struct stat*buf); * 将参数file_name所指的文件状态复制到参数buf所指的结构中 * 成功返回0失败返回-1错误存储于errno */ printf(/etc/passwd文件的大小是%d/n,buf.st_size); printf(/etc/passwd文件的最后一次修改时间是%d/n,buf.st_ctim); return 0; }