当前位置: 首页 > news >正文

Linux获取文件属性

以-rw-rw-r-- 1 ubuntu ubuntu 56 八月  1 19:37 1.txt 为例

一、stat函数

功能:获取文件的属性

函数原型:

#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>int stat(const char *pathname, struct stat *statbuf);

参数:

        char *pathname:指定要获取属性的文件路径以及名字

        struct stat *statbuf:存储获取到的属性

返回值:

        成功,返回0

        失败,返回-1,更新errno

在Linux中封装的结构体:

 struct stat {dev_t     st_dev;         /* ID of device containing file */ino_t     st_ino;         /* Inode number */             inode号mode_t    st_mode;        /* File type and mode */       文件类型以及权限nlink_t   st_nlink;       /* Number of hard links */     硬链接数uid_t     st_uid;         /* User ID of owner */         用户uidgid_t     st_gid;         /* Group ID of owner */        组用户giddev_t     st_rdev;        /* Device ID (if special file) */off_t     st_size;        /* Total size, in bytes */     文件大小blksize_t st_blksize;     /* Block size for filesystem I/O */blkcnt_t  st_blocks;      /* Number of 512B blocks allocated *//* Since Linux 2.6, the kernel supports nanosecondprecision for the following timestamp fields.For the details before Linux 2.6, see NOTES. */struct timespec st_atim;  /* Time of last access */     最后一次被访问的时间struct timespec st_mtim;  /* Time of last modification */     最后一次被修改的时间struct timespec st_ctim;  /* Time of last status change */     最后一次改变状态的时间#define st_atime st_atim.tv_sec      /* Backward compatibility */#define st_mtime st_mtim.tv_sec    #define st_ctime st_ctim.tv_sec};

 打印文件属性:

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>int main(int argc, const char *argv[])
{struct stat buf;if(stat("./1.txt",&buf) < 0){perror("stat");return -1;}//获取文件类型和权限printf("0%o ",buf.st_mode);//获取文件的硬链接数printf("%ld ",buf.st_nlink);//获取文件所属用户printf("%d ",buf.st_uid);//获取文件所属组用户printf("%d ",buf.st_gid);//获取文件大小printf("%ld ",buf.st_size);//获取时间戳printf("%ld ",buf.st_ctime);return 0;
}

【输出样例】0100664 1 1000 1000 56 1690889850  

使用stat函数输出的结果与Linux定义的文件属性输出样式有些不同,因此还需要进行一些处理

二、获取文件权限

void get_filePermission(mode_t m)
{long x = 0400;char c[]="rwx";int count = 0; while(x){if((m & x) == 0)putchar('-');elseprintf("%c",c[count%3]);count++;x = x >> 1;}putchar(' ');
}

三、获取文件类型

void get_fileType(mode_t m)
{if(S_ISREG(m))putchar('-');else if(S_ISDIR(m))putchar('d');else if(S_ISCHR(m))putchar('c');else if( S_ISBLK(m))putchar('b');else if( S_ISFIFO(m))putchar('p');else if( S_ISLNK(m))putchar('l');else if( S_ISSOCK(m))putchar('s');
}

四、获取文件所属用户名

getpwuid函数

功能:通过uid号获取用户的信息

函数原型:

#include <sys/types.h>
#include <pwd.h>struct passwd *getpwuid(uid_t uid);

参数:

        uid_t uid:指定uid号 

返回值:

        成功,返回结构体指针

        失败,返回NULL,更新errno

在Linux中封装的结构体:

struct passwd {char   *pw_name;       /* username */char   *pw_passwd;     /* user password */uid_t   pw_uid;        /* user ID */gid_t   pw_gid;        /* group ID */char   *pw_gecos;      /* user information */char   *pw_dir;        /* home directory */char   *pw_shell;      /* shell program */
};

封装的函数: 

void get_fileUserName(uid_t uid)
{struct passwd *pwd = getwuid(uid);if(NULL == pwd){perror("getpwuid");return;}printf("%s\n",pwd->pw_name);return;
}

五、获取文件所属组用户名

六、完整代码演示

相关文章:

Linux获取文件属性

以-rw-rw-r-- 1 ubuntu ubuntu 56 八月 1 19:37 1.txt 为例 一、stat函数 功能&#xff1a;获取文件的属性 函数原型&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <unistd.h>int stat(const char *pathname, struct stat *stat…...

String字符串拼接

String字符串拼接 1.简介2.StringBuilder2.1StringBuilder介绍2.2使用说明 3.StringBuffer4.StringJoiner5.String.Join() 1.简介 对于String来说是不可变的&#xff0c;使用修改字符串是在不断地创建新的字符串对象&#xff0c;而不是在原有的对象上修改的。并且对于字符串的…...

在矩池云使用Llama2-7B的具体方法

今天给大家分享如何在矩池云服务器使用 Llama2-7b模型。 硬件要求 矩池云已经配置好了 Llama 2 Web UI 环境&#xff0c;显存需要大于 8G&#xff0c;可以选择 A4000、P100、3090 以及更高配置的等显卡。 租用机器 在矩池云主机市场&#xff1a;https://matpool.com/host-m…...

API教程:轻松上手HTTP代理服务!

作为HTTP代理产品供应商&#xff0c;我们为您带来一份详细的教程&#xff0c;帮助您轻松上手使用API&#xff0c;并充分利用HTTP代理服务。无论您是开发人员、网络管理员还是普通用户&#xff0c;本教程将为您提供操作指南和代码模板&#xff0c;确保您能够顺利使用API并享受HT…...

脑网络通信:概念、模型与应用——Brain network communication: concepts, models and applications

脑网络通信:概念、模型与应用 介绍神经系统是通信网络从图论到大脑网络通信大脑网络通信模型和测量的分类法路由协议最短路径路由导航扩散过程广播(可通信性)参数模型线性阈值模型偏向性随机游走最短路径集合当前和新兴的应用将大脑结构与功能关联起来认知和临床表型的个体间…...

Docker创建tomcat容器实例后无法访问(HTTP状态 404 - 未找到)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…...

oracle数据库dbLink的使用

Oracle的数据库链路&#xff08;dbLink&#xff09;是一种允许在两个不同的数据库实例之间进行通信和数据交换的功能。它可以让你在一个数据库中访问另一个数据库的对象和数据&#xff0c;就像它们属于同一个数据库一样。 创建一个link: CREATE public DATABASE LINK link_sco…...

Coremail中睿天下|2023年第二季度企业邮箱安全态势观察

7月24日&#xff0c;Coremail邮件安全联合中睿天下发布《2023第二季度企业邮箱安全性研究报告》&#xff0c;对2023第二季度和2023上半年的企业邮箱的安全风险进行了分析。 一、垃圾邮件同比下降16.38% 根据Coremail邮件安全人工智能实验室&#xff08;以下简称AI实验室&#…...

ZooKeeper分布式锁、配置管理、服务发现在Java开发中的应用

ZooKeeper提供了多种功能&#xff0c;包括分布式锁、配置管理、服务发现、领导选举等。 下面是一些常见的ZooKeeper功能及其在Java中的应用示例代码。 分布式锁 import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch;pu…...

openGauss学习笔记-27 openGauss 高级数据管理- JOIN

文章目录 openGauss学习笔记-27 openGauss 高级数据管理- JOIN27.1 交叉连接27.2 内连接27.3 左外连接27.4 右外连接27.5 全外连接 openGauss学习笔记-27 openGauss 高级数据管理- JOIN JOIN子句用于把来自两个或多个表的行结合起来&#xff0c;基于这些表之间的共同字段。 在…...

域名解析优先级

浏览器访问过程解析 访问网址——>首先在本地电脑看看hosts里面是否有域名对应IP地址&#xff0c;如何有直接访问对应IP&#xff0c; 如果没有&#xff0c;则联网询问DNS服务器&#xff08;一般网卡那边都配置了DNS服务器IP&#xff09; linux hosts 路径&#xff1a; w…...

【Opencv】视频跟踪算法KCF

目录 KCF算法简介opencv实现代码copencv实现代码python KCF算法简介 KCF&#xff08;Kernelized Correlation Filter&#xff09;是一种基于核相关滤波器的目标跟踪算法。它通过学习目标的外观特征和使用核相关滤波器进行目标定位。KCF属于传统算法的单目标跟踪器。下面是对KC…...

后端整理(集合框架、IO流、多线程)

1. 集合框架 Java集合类主要有两个根接口Collection和Map派生出来 Collection派生两个子接口 List List代表了有序可重复集合&#xff0c;可以直接根据元素的索引进行访问Set Set代表无序不可重复集合&#xff0c;只能根据元素本身进行访问 Map接口派生 Map代表的是存储key…...

C++ 类和对象篇(二) this指针

目录 一、this指针概念 二、this指针的特性 三、this指针存在哪里&#xff1f; 四、this指针可以为空吗&#xff1f; 一、this指针概念 1.是什么&#xff1f; 它是类内非静态成员函数的隐含形参&#xff0c;this指针指向调用该函数的对象。 this指针是C编译器给每个“非静态…...

Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率

Excel是广泛应用于办公场景的优质电子表格软件&#xff0c;然而&#xff0c;许多人只是使用鼠标点击菜单和工具栏来完成操作&#xff0c;而忽略了快捷键的威力。在本文中&#xff0c;我们将详解Excel中的F1-F9快捷键&#xff0c;帮助您掌握实用的快捷操作&#xff0c;提升工作效…...

Webpack 安装教程

Webpack 是一个前端资源加载/打包工具。 安装 Webpack 使用 cnpm 安装 webpack&#xff1a; cnpm install webpack -g 创建项目 接下来我们创建一个目录 app&#xff1a; mkdir app 在 app 目录下添加 runoob1.js 文件&#xff0c;代码如下&#xff1a; app/runoob1.js 文件…...

移远通信首批加入“5G+eSIM计算终端产业合作计划”,助力大屏移动终端全时在线

7月29日&#xff0c;在全球数字娱乐产业盛会 ChinaJoy上&#xff0c;中国联通携手高通公司、GSMA发布了“5GeSIM 计算终端产业合作计划”。 作为全球领先的物联网整体解决方案供应商&#xff0c;移远通信首批加入该计划&#xff0c;副总经理刘明辉受邀参加5GeSIM 计算终端产业合…...

全网最强大的工具箱—utools介绍及分享

今天来介绍一个相见恨晚的PC端工具——utools&#xff0c;什么是utools&#xff1f;用其自身的话来说&#xff1a;“uTools是一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件&#xff0c;打造你得心应手的工具集合。”,体验了下&#xff0c;好用且强大&…...

Linux常用基础命令❀

文章目录❀ ❀ls命令 ❀cd命令 ❀pwd命令 ❀date命令 ❀创建、删除文件和目录命令 ❀alias命令 ❀复制、移动、重命名、查看&#xff08;文件、目录&#xff09;命令 ❀find查找、wc统计命令 ❀vi/vim命令 1、打开文件 2、工作模式 vi与vim的四个模式 进入编辑模式…...

SQL-进阶

mysql --local-infile -u root -pset global local_infile 1;load data local infile 目录 into able 表名 fields terminated by , lines terminated by \n;...

5分钟完成专业级黑苹果配置:OpCore Simplify终极简化指南

5分钟完成专业级黑苹果配置&#xff1a;OpCore Simplify终极简化指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 你是否曾经为黑苹果配置的复杂性…...

OpenClaw浏览器自动化:ollama-QwQ-32B驱动的研究资料收集系统

OpenClaw浏览器自动化&#xff1a;ollama-QwQ-32B驱动的研究资料收集系统 1. 为什么需要自动化研究资料收集 作为一名经常需要查阅大量文献的技术写作者&#xff0c;我长期被资料收集的效率问题困扰。传统工作流程中&#xff0c;我需要手动在Google Scholar、arXiv、知乎等平…...

从零到一:基于GitHub Pages与Jekyll搭建你的专属学术主页

1. 为什么选择GitHub Pages Jekyll搭建学术主页&#xff1f; 作为一个长期在学术界摸爬滚打的老兵&#xff0c;我见过太多同行花大价钱购买服务器和维护网站&#xff0c;结果最后因为各种技术问题半途而废。直到我发现GitHub Pages和Jekyll这对黄金组合&#xff0c;才真正找到…...

Windows10下用VS2019编译UE4.27源码的完整避坑指南(附环境配置截图)

Windows 10下用VS2019编译UE4.27源码的完整避坑指南 第一次在Windows 10上编译UE4.27源码&#xff0c;就像在迷宫中寻找出口——每个转角都可能藏着意想不到的陷阱。作为一位经历过无数次编译失败的老兵&#xff0c;我深知那些看似简单的步骤背后隐藏的魔鬼细节。本文将带你避开…...

pykg2vec功能mastery:知识图谱嵌入模型的高级配置与优化

pykg2vec功能mastery&#xff1a;知识图谱嵌入模型的高级配置与优化 【免费下载链接】pykg2vec 项目地址: https://gitcode.com/gh_mirrors/py/pykg2vec 问题导入 知识图谱嵌入模型训练中&#xff0c;开发者常面临三大痛点&#xff1a;模型参数调优耗时且效果不佳、不…...

大模型进阶:掌握Function Calling和MCP,解锁AI生产力(收藏版)

本文深入探讨了Function Calling技术如何帮助大模型获取实时信息、执行任务&#xff0c;以及MCP协议在大模型与外部交互中的关键作用。文章阐述了从提示工程到RAG&#xff0c;再到Function Calling和MCP的技术演进路径&#xff0c;强调了这些技术如何使大模型从信息工具转变为生…...

EtherCAT模块化实战:如何为你的设备设计可热插拔的IO模块(基于SSC与0x4711示例)

EtherCAT模块化实战&#xff1a;如何为你的设备设计可热插拔的IO模块 在工业自动化领域&#xff0c;设备的灵活性和可扩展性正变得越来越重要。想象一下&#xff0c;当你的客户需要在生产线上快速更换不同类型的传感器或执行器时&#xff0c;如果每次硬件变更都需要重新配置整个…...

Play Integrity Fix:高效解决Android设备认证问题的实战指南

Play Integrity Fix&#xff1a;高效解决Android设备认证问题的实战指南 【免费下载链接】PlayIntegrityFix Fix Play Integrity (and SafetyNet) verdicts. 项目地址: https://gitcode.com/GitHub_Trending/pl/PlayIntegrityFix 问题引入&#xff1a;Android设备认证的…...

QGIS 3.28 保姆级配置指南:从中文界面到高德底图,手把手搞定智驾地图工作流

QGIS 3.28 智能驾驶地图工程师开箱指南&#xff1a;从零构建高精度工作流 刚拿到工牌的智能驾驶地图工程师小李&#xff0c;面对全新的QGIS界面有些手足无措。作为空间数据处理的核心工具&#xff0c;QGIS的配置直接决定了后续高精地图生产的效率与精度。本文将带你完成从软件…...

深度学习驱动的图像去雾:2023年最新算法与应用实践

1. 图像去雾技术的现状与挑战 清晨打开窗户&#xff0c;如果外面雾气弥漫&#xff0c;我们往往会等雾散了再拍照。但计算机视觉系统可没这个耐心——自动驾驶汽车必须实时看清路况&#xff0c;无人机巡检得在雾天正常工作。这就是图像去雾技术存在的意义。2023年&#xff0c;随…...