Linuxstat_linux内核编译的基本流程

Linuxstat_linux内核编译的基本流程stat函数讲解:表头文件:#include#include定义函数:intstat(constchar*file_name,structstat*buf);函数说明:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中返回值:执行成功则返回0,失败返回-1,错误代码存于errno错误代码:ENOENT参数file_name指定的文件不存在ENOT…

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

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

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的路径名称太长

int stat(const char *file_name,struct stat *buf);

int fstat(int filedes,struct stat *buf);

stat 结构定义于:/usr/include/sys/stat.h 文件中

struct stat finfo;

stat( sFileName, &finfo );

int size = finfo. st_size;

struct stat {

mode_t st_mode; //文件对应的模式,文件,目录等

ino_t st_ino; //i-node节点号

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用来判断没有打开的文件,而fstat用来判断打开的文件.我们使用最多的属性是st_mode.通过着属性我们可以判断给定的文件是一个普通文件还是一个目录,连接等等.可以使用下面几个宏来判断.

S_ISLNK(st_mode):是否是一个连接.

S_ISREG是否是一个常规文件.

S_ISDIR是否是一个目录

S_ISCHR是否是一个字符设备.

S_ISBLK是否是一个块设备

S_ISFIFO是否是一个FIFO文件.

S_ISSOCK是否是一个SOCKET文件.

用法:

//定义一个结构体

struct stat m;

//用户输入的文件名(用来判断是否是目录)。

char *filename;

int a;

int n = stat(filename,&m);

a = S_ISDIR(m.st_mode);

如果a为真,则说明是目录,否则不是。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • android 课程格子源码,课程格子Android客户端产品体验报告[通俗易懂]

    android 课程格子源码,课程格子Android客户端产品体验报告[通俗易懂]概览手机:魅族MX3操作系统:FlymeOS3.5.2(A19220)体验产品:课程格子Android客户端软件版本:6.1需求分析目标人群:在校大学生使用场景:大学生课前查看课程,课堂做笔记,课下在BBS灌水。用户需求:课程导入便利,显示准确,操作便捷,功能新颖有趣。产品分析1.信息架构2.页面视图A.课程格子菜单栏放在顶部,按钮也并不大,在子页面中也都是同样的设计,没有分出导航栏或状态栏(…

    2022年10月4日
    3
  • Linux在高铁项目的部署环境

    Linux在高铁项目的部署环境

    2022年1月15日
    50
  • Appium – iOS Mac环境结构

    Appium – iOS Mac环境结构

    2022年1月7日
    46
  • isnotempty和isnotnull_likely与possible和probable的区别

    isnotempty和isnotnull_likely与possible和probable的区别前两天因为用到isBlank,上网查了下,顺便放在CSDN上,希望能帮助到更多的人!!!isNotEmpty将空格也作为参数,isNotBlank则排除空格参数参考StringUtils方法的操作对象是java.lang.String类型的对象,是JDK提供的String类型操作方法的补充,并且是null安全的(即如果输入参数String为null则不会抛出NullPointerException…

    2022年8月12日
    9
  • 监听手机录音

    监听手机录音

    2021年11月14日
    162
  • bi报表开发工具_三大报表的勾稽关系图

    bi报表开发工具_三大报表的勾稽关系图为什么需要电子表格国内目前的同类产品中都有报表工具,这些工具大部分都有一个类似Excel的操作界面:单元格、快捷键、工具栏等典型设计工具要求。这些工具要么需要有专业的背景,或者专业的工程师提供支持,要么学习成本高,调整报表样式十分麻烦。作为报表开发人员而言,花费大量时间去学习一个新工具是一件非常苦恼的事情,我们能否直接把exce作为报表设计的工具呢?基于这个思路,诞生了我们的Spreadsheet…

    2022年10月19日
    2

发表回复

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

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