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


相关推荐

  • IDEA + Groovy脚本一键生成实体类,用法舒服,高效!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:悲凉的秋风 blog.csdn.net/qq_34371461/article/details/8057128…

    2021年6月27日
    95
  • ora00279解决办法_oracle物化视图日志表

    ora00279解决办法_oracle物化视图日志表某物化视图在增量刷新的时候报错ora-00920,尝试全量刷新的时候,报错ora-00904。BEGINDBMS_MVIEW.REFRESH(‘MV_ABCD_K_PPLLCJ’,’F’);END;ORA-12018:在创建”MYJUKKA”.”MV_ABCD_K_PPLLCJ”的代码时出现以下错误ORA-00920:无效的关系运算符ORA-06512:在”SYS.SNAPSHOT”,line…

    2022年9月20日
    3
  • 通俗讲解 同步、异步、阻塞、非阻塞 编程

    通俗讲解 同步、异步、阻塞、非阻塞 编程#真正意义上的异步IO是说内核直接将数据拷贝至用户态的内存单元,再通知程序直接去读取数据。#select/poll/epoll都是同步IO的多路复用模式1.同步和异步#同步和异步关注的是消息通信机制#所谓同步,就是在发出一个*调用*时,没得到结果之前,该*调用*就不返回。但是一旦调用返回就得到返回值了,*调用者*主动等待这个*调用*的结果#所谓异步,就是在发出一个*调用*时,这个*调用*就直接返回了,不管返回有没有结果。当一个异步过程调用发出后,*被调用者*.

    2022年6月1日
    35
  • 汽车电子设计之SBC芯片简单认识[通俗易懂]

    汽车电子设计之SBC芯片简单认识[通俗易懂]参考英飞凌SBC官网资料:https://www.infineon.com/cms/cn/product/automotive-system-ic/system-basis-chips-sbc/SBC芯片在汽车电子领域可谓占一席之地了。那么什么是SBC?怎么用?用在哪里?主要特性?1.什么是SBC?SBC的系统框图系统基础芯片(SBC,SystemBasisChip),从广义上来说,是一种包含电源、通信、监控诊断、安全监控等特性以及GPIO的独立芯片。随着汽车电子模块的日益小型化,对低功耗和

    2025年11月1日
    2
  • java graphics2d 绘图_Java编程 Graphics2D类的绘图方法

    java graphics2d 绘图_Java编程 Graphics2D类的绘图方法现在都讲究立体的效果 Graphics2D 类的绘图方式就属于高级绘图了 在我们日常生活中经常提到的 2d 3d 电影都是立体的 而编程语言也是一样 可以实现 2d 的效果哦 下面就让我们一起来学习下吧 Java 语言在 Graphics 类提供绘制各种基本的几何图形的基础上 扩展 Graphics 类提供一个 Graphics2D 类 它拥用更强大的二维图形处理能力 提供 坐标转换 颜色管理以及文字布局等更精确的控制

    2025年7月8日
    2
  • PriorityQueue解析

    PriorityQueue解析转载出自于深入理解JavaPriorityQueueJava中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让读者建立对PriorityQueue建立清晰而深入的认识。总体介绍前面以JavaArrayDeque为例讲解了Stack和Q

    2022年4月30日
    36

发表回复

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

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