stat函数的用法_Str函数

stat函数的用法_Str函数stat和lstat是兄弟函数,都是用于获取文件信息如果文件不是链接文件,则二者没有区别,如果是链接文件有如下区别:stat:获取链接文件的信息时,具有穿透能力,直接穿越链接文件,获取所被链接文件的信息。lstat:获取链接文件的信息,无穿透能力函数原型intstat(constchar*pathname,structstat*buf);intlstat(constcha…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

/欢迎大家批评指正/

stat和lstat是兄弟函数,都是用于获取文件信息
如果文件不是链接文件,则二者没有区别,如果是链接文件有如下区别:
stat:获取链接文件的信息时,具有穿透能力,直接穿越链接文件,获取所被链接文件的信息。
lstat:获取链接文件的信息,无穿透能力

函数原型
int stat(const char *pathname,struct stat *buf);
int lstat(const char *pathname,struct stat buf);
参数一:文件路径
参数二:用于存放文件信息的结构体(struct stat)
struct stat {

dev_t st_dev; /
ID of device containing file /
ino_t st_ino; /
inode number /
mode_t st_mode; /
protection /
nlink_t st_nlink; /
number of hard links /
uid_t st_uid; /
user ID of owner /
gid_t st_gid; /
group ID of owner /
dev_t st_rdev; /
device ID (if special file) /
off_t st_size; /
total size, in bytes /
blksize_t st_blksize; /
blocksize for filesystem I/O /
blkcnt_t st_blocks; /
number of 512B blocks allocated */

mode_t st_mode; /* protection */ 文件属性
S_IFMT 0170000 文件类型位字段的位掩码
S_IFSOCK 0140000 套接字
S_IFLNK 0120000 符号链接
S_IFREG 0100000 普通文件
S_IFBLK 0060000 块设备
S_IFDIR 0040000 目录
S_IFCHR 0020000 字符设备
S_IFIFO 0010000 管道文件

用stat或lstat获取文件信息

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#include <stdio.h>

int main(int argc,const char*argv[])   //执行  ./main filepath
{
	//获取文件的信息
	  //int stat(const char *path, struct stat *buf);
	  //struct stat *buf;
	  struct stat st;//存放文件信息的结构体
	  
	  int ret = stat(argv[1],&st);
	  // int ret = lstat(argv[1],&st);
	  if(ret == 0)
	  {
		  printf("获取信息成功\n");
	  }
	  printf("文件的大小为:%d\n",(int)st.st_size);
	  
	  if((st.st_mode & S_IFMT) == S_IFDIR)//S_IFMT 可判断其他类型 else if 并列判断
	  {
		  printf("该文件为普通类型的文件\n");
	  }
		return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171807.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • cad怎样生成轮廓线(图样中可见轮廓线用什么线)

    一般在做影像处理时,为提升效率,常会将影像转为二值影像后再进行处理。在EmguCV内有许多找轮廓线的方法,但是随着版本更新,不同版本的函数不见得会一样,每次都要重新查询实在很麻烦,那不如把他们记下来。版本概要:EmguCV版本:3.2.0.2682编译器版本:VisualStudio2017Community方案平台:x64(许多导致程式无法执行的原因是因为没有改执

    2022年4月14日
    203
  • 计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小[通俗易懂]

    计算机桌面图片怎么设置大小,怎么设置桌面壁纸大小[通俗易懂]很多人都知道怎麽设置电脑桌面,可真正找到适合自己屏幕的可能很少,图片或大或小,小编为大家分享了设置桌面壁纸大小的方法,下面大家跟着小编一起来了解一下吧。设置桌面壁纸大小方法先查看自己电脑屏幕分辨率,方法:依次打开控制面板\外观和个性化\显示\屏幕分辨率。查看图片的大小:单击图片,将鼠标放在图片图标上,就能看到尺寸。双击图片,用windows照片查看器打开,点击”打开“,选择画图。假设屏幕分辨率:…

    2022年5月15日
    167
  • pycharmdjango项目实战_django项目实例精解

    pycharmdjango项目实战_django项目实例精解创建项目我们创建django项目有两种方式,命令行方式和使用pycharm工具创建,本文就介绍常用的pycharm工具创建首先点击django,输入项目的名称,选择创建好的虚拟环境,最后点击cre

    2022年7月30日
    9
  • import duties(Python import变量)

    最近在读《编程之美》,打算用C#实现其中一个题目,就是如何控制CPU的使用率在50%,使得在资源管理器中CPU利用率维持在一条直线。单核的还容易办到,但是现在的机器一般都是多核的,这样就需要调用Win32API SetThreadAffinityMask 来给线程制定CPU去执行。但这个API只能在C++调用,那么在C#里如何调用呢?更进一步,就是在C#里为什么没有全部的WIN32API可

    2022年4月15日
    50
  • 非常优秀的iphone学习文章总结!

    非常优秀的iphone学习文章总结!Thissitecontainsatonoffuntutorials–somanythattheywerebecominghardtofind!SoIputtogetherthislittlepagetohelpeveryonequicklyfindthetutorialthey’relookingfor.Hopeyou…

    2022年7月12日
    31
  • java笔记02

    java笔记02

    2021年7月8日
    68

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号