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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • django配置文件详解_pycharm配置django

    django配置文件详解_pycharm配置django前言django框架的日志通过python内置的logging模块实现的,既可以记录自定义的一些信息描述,也可以记录系统运行中的一些对象数据,还可以记录包括堆栈跟踪、错误代码之类的详细信息。log

    2022年7月30日
    9
  • 数据库监控工具_@SpringBootApplication

    数据库监控工具_@SpringBootApplicationp6spy是一个开源的数据库监控插件,我们能通过使用p6spy打印数据库操作或者保存操作日志。首先放上p6spy的git地址https://github.com/p6spy/p6spy在SpringBoot中使用p6spy也是非常简单。一.Spring中使用p6spy1.添加maven依赖https://mvnrepository.com/artifact/p6spy/p6spy找一个…

    2022年9月27日
    0
  • 数据库(SQL)面试题,基础知识(超全面)[通俗易懂]

    数据库(SQL)面试题,基础知识(超全面)[通俗易懂]什么是存储过程?有哪些优缺点?存储过程就像我们编程语言中的函数一样,封装了我们的代码(PLSQL、T-SQL)存储过程的优点能够将代码封装起来 保存在数据库之中 让编程语言进行调用 存储过程是一个预编译的代码块,执行效率比较高 一个存储过程替代大量T_SQL语句,可以降低网络通信量,提高通信速率存储过程的缺点:每个数据库的存储过程语法几乎都不一样,十分难以维护(不…

    2022年8月28日
    1
  • win10怎么卸载oracle_win10卸载oracle11g

    win10怎么卸载oracle_win10卸载oracle11g1.停止”服务”中所有关于Oracle数据库服务。切记:删除Oracle数据库,此文只是借鉴,因为每个人的删除数据库的时候,不可避免的出现与本文不一样的突发情况,新手删除数据库的需要勇气,大不了重装电脑系统。进入服务的方法很多,如:(1)在运行中输入services.msc,然后找到所有跟Oracle有关的服务。2.运行deinstall.bat找到你安装Oracle数据库所在的

    2022年10月8日
    0
  • 你用对锁了吗?浅谈 Java “锁” 事

    你用对锁了吗?浅谈 Java “锁” 事

    2020年11月20日
    181
  • 花指令_cmp指令

    花指令_cmp指令本文作者:sodme本文出处:http://blog.csdn.net/sodme声明:本文能够不经作者允许随意转载、复制、引用。但不论什么对本文的引用,均须注明本文的作者、出处以及本行声明信息。可能

    2022年8月2日
    4

发表回复

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

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