Linux 应用编程之stat 函数

Linux 应用编程之stat 函数#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>intstat(constchar*pathname,structstat*buf);pathname:用于指定一个需要查看属性的文件路径。buf:structstat类型指针,用于指向一个structstat结构体变量。调用stat函数的时候需要传入一个structstat变量的指针,获取到的文件..

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

Jetbrains全家桶1年46,售后保障稳定

Linux
下可以使用
stat
命令查看文件的属性,其实这个命令内部就是通过调用
stat()
函数来获取文件属性的,stat
函数是
Linux 中的系统调用,用于获取文件相关的信息。(可通过”man 2 stat”命令查看):
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *pathname, struct stat *buf);

Jetbrains全家桶1年46,售后保障稳定

pathname

用于指定一个需要查看属性的文件路径。
buf

struct stat
类型指针,用于指向一个
struct stat
结构体变量。调用
stat
函数的时候需要传入一个
struct stat 变量的指针,获取到的文件属性信息就记录在
struct stat
结构体中
返回值:
成功返回
0
;失败返回
-1
,并设置
error

 

示例代码:
获取文件的 inode 节点编号以及文件大小,并将它们打印出来。

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

int main(void)
{
    struct stat file_stat;
    int ret;
    /* 获取文件属性 */
    ret = stat("./test_file", &file_stat);
    if (-1 == ret)
    {
        perror("stat error");
        exit(-1);
    }
    /* 打印文件大小和 inode 编号 */
    printf("file size: %ld bytes\n"
           "inode number: %ld\n",
           file_stat.st_size,
           file_stat.st_ino);
    exit(0);
}

测试验证:

Linux 应用编程之stat 函数

 从图中可以得知,此文件的大小为 4060 个字节,inode 编号为 656929

接下来编译测试程序,并运行

Linux 应用编程之stat 函数

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

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

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


相关推荐

  • [C#] 剖析 AssemblyInfo.cs – 了解常用的特性 Attribute

    [C#] 剖析 AssemblyInfo.cs – 了解常用的特性 Attribute剖析 AssemblyInfo.cs-了解常用的特性Attribute【博主】反骨仔【原文】http://www.cnblogs.com/liqingwen/p/5944391.h

    2022年7月2日
    21
  • 结构体指针赋值[通俗易懂]

    结构体指针赋值[通俗易懂]//方法1:可以给p分配一段内存空间,并使其指向此空间:#includemain(){structabc{inta;};structabc*p;p=(structabc*)malloc(sizeof(structabc));p->a=1;printf(“%d\n”,p->a);}//方法2:可以让p指向一个已存在的内存空间:#i

    2022年7月11日
    24
  • intel处理器_bios cppc

    intel处理器_bios cppcC++string类的find()函数怎么用

    2022年10月23日
    0
  • java代码c3p0连接池配置,c3p0连接池acquireincrement属性配置详解

    java代码c3p0连接池配置,c3p0连接池acquireincrement属性配置详解一、c3p0数据库连接池介绍c3p0是应用在Java项目中企业开发中的一个常用的连接池,一般都会配合Java开发框架spring、Hibernate、Mybatis等整合使用,属于开源连接池中性能比较强劲并且受市场比较欢迎的数据库连接池。之所以项目中会应用连接池,主要是因为我们应用JDBC操作数据库时需要创建连接,然后执行完sql语句之后立马就释放连接,用完之后然后释放非常消耗时间,而大部分消耗时…

    2022年6月6日
    73
  • WebView输入框提示

    做基于WebView应用时,页面上有一个输入框,当输入的文字过多时,超过输入框的行数时,输入框能够滚动,这时间问题来了,输入的提示箭头会移动到输入框外,如何解决这个问题呢,查找chromium源码如下

    2021年12月26日
    40
  • 时序数据库应用_tsdb时序数据库

    时序数据库应用_tsdb时序数据库前言mysql可能大家都用的比较多且普遍,最近1年在使用PostgreSql,其大体DML语句与mysql类似,只是部分DDL语句有些区别,写一篇文章给正在应用该数据库或者准备选型该数据库的朋友,分享下使用方式与心得PostgreSqlPostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才…

    2022年9月27日
    0

发表回复

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

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