stat函数百度百科_strel函数

stat函数百度百科_strel函数stat函数的简单使用stat函数是用来获取文件的各种属性的一个linux下的常用API函数。函数原型为intstat(constchar*path,structstat*buf);stat定义如下:structstat{dev_tst_dev;//文件的设备编号ino_tst_ino;//节点mode_tst_m…

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

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

stat 函数的简单使用

stat 函数是用来获取文件的各种属性的一个linux下的常用API函数。
函数原型为int stat(const char* path,struct stat* buf);
stat定义如下:

struct stat {
    dev_t   st_dev; //文件的设备编号
    ino_t   st_ino; //节点
    mode_t  st_mode;//文件的类型和存取的权限
    nlink_t st_nlink;//连接到该文件的硬链接数目,刚建立的文件值为1
    uid_t   st_uid;//用户的ID
    gid_t   st_gid;//组ID
    dev_t   st_rdev;//(设备类型)若此文件为设备文件,则其为设备的编号
    off_t   st_size;//文件字节数(文件大小)
    blksize_t   st_blksize;//块大小(文件系统的I/O缓存区大小)
    blkcnt_t    st_blocks;//块数
    time_t      st_atime;//最后一次访问时间
    time_t      st_mtime;//最后一次修改时间
    time_t      st_ctime;//最后一次改变时间(指属性)
};

st_mode 的定义 –16位整数

0-2--其他人权限(8进制)
S_IROTH  00004 读权限
S_IWOTH  00002 写权限
S_IXOTH  00001 执行权限
S_IRWXO  00007 掩码

3-5--所属组权限
S_IRGRP  00040 读权限
S_IWGRP  00020 写权限
S_IXGRP  00010 执行权限
S_IRWXG  00070 掩码

6-8--文件所有者权限
S_IRUSR  00400  读权限
S_IWUSR  00200  写权限
S_IXUSR  00100  执行权限
S_IRWXU  00700  掩码


12-15--文件类型
S_IFSOCK 0140000 套接字
S_IFLNK  0120000 符号链接(软连接)
S_IFREG  0100000 普通文件
S_IFBLK  0060000 块设备
S_IFDIR  0040000 目录
S_IFCHR  0020000 字符设备
S_IFIFO  0010000 管道

S_IFMT 掩码,用来过滤文件类型

statdemo.c

#include <stdio.h>
#include <stdlib.h>
#include <pwd.h>
#include <grp.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>
#include <sys/sysmacros.h>

int main(int argc,char* argv[])
{
        struct stat st;
        if(argc != 2)
            {
                fprintf(stderr,"Usage: %s <pathname>\n",argv[0]);
            exit(EXIT_FAILURE);
        }
    if(stat(argv[1],&st) == -1)
        {
            perror("stat");
            exit(EXIT_FAILURE);
        }

    printf("主设备号为:%lx,次设备号为%lx\n",(long) major(st.st_dev)),(long) minor(st.st_dev);

           printf("文件类型为:");

    switch(st.st_mode & S_IFMT) {
            case S_IFBLK: printf("设备文件\n");     break;
            case S_IFCHR: printf("字符设备\n");     break;
            case S_IFDIR: printf("目录\n");         break;
            case S_IFIFO: printf("管道文件\n");     break;
            case S_IFLNK: printf("软连接文件\n");   break;
            case S_IFREG: printf("普通文件\n");     break;
            case S_IFSOCK: printf("套接字文件\n");  break;
            default: printf("未知文件\n");          break;
    }

    printf("节点号为 %ld\n", (long) st.st_ino);
    printf("文件权限为: %lo (octal)\n",(unsigned long) st.st_mode);
    printf("链接数为: %ld\n", (long) st.st_nlink);
    printf("所有者: 用户为:%s, 组为:%s\n",getpwuid(st.st_uid)->pw_name,getgrgid(st.st_gid)->gr_name);
    printf("I/O缓存区大小为:%ld",(long) st.st_blksize);
    printf("文件大小为:%lld 字节\n",(long long) st.st_size);
    printf("块数为:%lld字节\n",(long long) st.st_blocks);
    printf("最后一次文件属性改变时间: %s",ctime(&st.st_ctime));
    printf("最后一次修改时间: %s",ctime(&st.st_mtime));
    printf("最后一次访问时间: %s",ctime(&st.st_atime));

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

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

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


相关推荐

  • Mysql—运行sql的小技巧

    本篇集中整理一下执行sql的小技巧,这种方式不仅带来了操作上的便捷,也可以保证数据可以数据的安全性。 1:查询数据(保证查询性能) 2:插入/更新/删除数据(保证数据安全)

    2022年2月25日
    61
  • arm架构和riscv架构_开源芯片架构

    arm架构和riscv架构_开源芯片架构首先,是cpu的两大架构:ARM和X86。

    2025年9月26日
    7
  • python数据可视化系列教程——matplotlib绘图全解

    python数据可视化系列教程——matplotlib绘图全解全栈工程师开发手册(作者:栾鹏)python教程全解matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,在matplotlib.pyplot模块中

    2022年6月15日
    36
  • SVN常用命令之checkout

    SVN常用命令之checkout

    2021年10月21日
    53
  • mdc和mdio是什么_mdc是哪个国家

    mdc和mdio是什么_mdc是哪个国家在项目开发中,经常会巧妙借助MDC解决链路跟踪、统计耗时等很多问题,通过往期分享的《MDC是什么鬼?用法、源码一锅端》,对MDC有了一个深入的了解,但是细心的同学在项目中,偶尔会发现NDC的身影(可能也从未谋面),那NDC到底是个什么玩意呢?别急,通过今天的分享,能让你轻松get如下几点。1.NDC快速入门;2.NDC与MDC有何不同;3.NDC刨根问底1.ND…

    2025年8月2日
    7
  • linux查看硬盘smart信息_centos查看未挂载磁盘

    linux查看硬盘smart信息_centos查看未挂载磁盘1          编写目的在如今大数据的环境中,磁盘的性能和稳定性是非常重要的一个业务因素。在Linux系统中,smartctl是较为常用的磁盘检测工具。本文基于Linux系统中smartctl进行分析,目的在于说明相关工具的使用,并对SMART(Self-Monitoring,AnalysisandReportingTechnology)做一些分析。2          …

    2022年10月8日
    3

发表回复

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

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