linux--关于linux文件IO(2) open、read、lseek、stat
open
在linux中的读写文件有对应的命令。在终端中输入man 2 open
可以打开open的手册页,注意man 2是linux自己的函数的一些手册,man 3是C库的手册
打开手册页之后找到open函数的用法如下:
#以下是需要的库文件,man 2 open打开直接复制
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>#这个是打开文件的用法,返回文件描述符,所以是int类型
int open(const char *pathname, int flags);参数:- pathname : 要打开的文件路径- flags : 对文件的操作权限和其他的设置-必选项:O_RDONLY, O_WRONLY, or O_RDWR-可选项:O_CREAT 文件不存在创建新文件 等等等...很多,去man 2 open里看。int open(const char *pathname, int flags, mode_t mode);参数:- pathname : 要打开的文件路径- flags : 对文件的操作权限和其他的设置-必选项:O_RDONLY, O_WRONLY, or O_RDWR-可选项:O_CREAT 文件不存在创建新文件 等等等...很多,去man 2 open里看。-mode : 八进制的数,表示创建出的新的文件的操作权限最终的权限是:mode & ~umask (这里是掩码取反, 然后和设置的mode按位与)0777 -> 111111111& 0775 -> 111111101-----------------------111111101会少一些权限,umask的作用就是抹去某些权限,普通用户coder是(0)022
mode这里为什么是8进制数?
因为在linux中权限要么就是rwx,就是读写可执行的权限,那么这三个权限如果都有就是111,二进制来说就是7。那么一个文件不仅只在一个地方有权限,还有用户对他的权限、其他文件对他的权限等这样的权限使用的地方,有三个这样的地方,那么如果三个地方全都有权限就是0777,0代表八进制数,777代表都有权限,
可以看到gcc编译之后,得到的txt文件权限是0775(5是因为最后是r-x)
read和write
同样man 2 read
打开得到read函数的手册,
#需要的头文件
#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);参数:- fd:文件描述符,open得到的,通过这个文件描述符操作某个文件- buf:需要读取数据存放的地方,数组的地址(传出参数)- count:指定de数组的大小,读多少返回值:-成功:>0:返回实际已经读取的字节数=0:文件已经读取完了-失败:-1,并且设置errno ssize_t write(int fd, const void *buf, size_t count);参数:-fd:文件描述符,open得到的,通过这个文件描述符操作某个文件-buf:要往磁盘写入的数据,数组-count:要写的数据的实际大小,写多少返回值:成功:实际写入的字节数失败:-1,并设置erro
lseek
与C库的fseek是一样的用法。man 2 lseek
看命令手册
#include <sys/types.h>
#include <unistd.h>off_t lseek(int fd, off_t offset, int whence);参数:-fd:文件描述符-offset: 偏移量 off_t就类似于long型-whence:SEEK_SET:直接指定文件指针到当前设置的offset位置处SEEK_CUR:设置偏移量,从当前文件指针加上设置的offsetSEEK_END:设置偏移量,从当前文件末尾的指针加上设置的offset返回:当前指针所在位置,也就是当前所在的字节数作用:1.移动文件指针到文件头lseek(fd,0,SEEK_SET);2.获取当前文件的指针位置lseek(fd,0,SEEK_CUR); 3.获取文件长度lseek(fd,0,SEEK_END);4.拓展文件长度,当前文件10b,拓展到110b 这个功能就是先提前占用磁盘大小,例如下载一个软件lseek(fd,100,SEEK_END); //需要写一次数据才管用write(fd, " ", 1);
stat
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>int stat(const char *pathname, struct stat *statbuf);作用:获取一个文件相关的一些信息,直接文件的信息参数:-pathname:操作文件的路径-statbuf:一个结构体变量,传出参数,用于保存获取到的文件的信息,返回值:成功:返回0失败:返回-1,设置errno
int lstat(const char *pathname, struct stat *statbuf);作用:获取软链接文件的信息参数:-pathname:操作文件的路径-statbuf:一个结构体变量,传出参数,用于保存获取到的文件的信息,返回值:成功:返回0失败:返回-1,设置errno
stat和lstat的区别就是,当有软链接时,stat会返回链接的那个的文件的信息,而lstat会返回软的那个问价你的信息。
一个文件包含着这么一些信息:
那么statbuf这个结构体是这样的变量:就是去获取他们的,创建的时候就struct stat statbuf
stat的获取信息的方式
相关文章:

linux--关于linux文件IO(2) open、read、lseek、stat
open 在linux中的读写文件有对应的命令。在终端中输入man 2 open可以打开open的手册页,注意man 2是linux自己的函数的一些手册,man 3是C库的手册 打开手册页之后找到open函数的用法如下: #以下是需要的库文件,man 2 open打开直接…...
利用xtquant高效获取财务数据:量化分析的重要补充
利用xtquant高效获取财务数据:量化分析的重要补充 在量化交易领域,虽然市场行情数据是核心,但财务数据作为企业基本面的重要反映,同样不可忽视。通过深入分析企业的财务报表,投资者可以更好地理解企业的经营状况和未来…...

Unity UI个人总结
个人总结,太简单的直接跳过。 一、缩放模式 1.固定像素大小 就是设置一个100x100的方框,在1920x1080像素下在屏幕中长度占比1/19,在3840x2160,方框在屏幕中长度占比1/38。也就是像素长款不变,在屏幕中占比发生变化 2.…...

Javascript的数据类型
Javascript的数据类型 1.基本数据类型1.1七种基本数据类型1.2单独说说BigInt1.3其它注意点 2.引用数据类型3.基本数据类型和引用数据类型的区别4.双等于号和三等于号的区别5.Javascript的类型转换机制5.1显示转换(强制转换)5.2隐式转换(1)减、乘、除(2)加(加法要区别算,因为不…...
Day3 25/2/16 SUN
【一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)】https://www.bilibili.com/video/BV13g41157hK?p4&v…...

欧洲分组加密算法之Kasumi
目录 (1)FL函数 (2)FO函数 (3)FI函数 密钥扩展算法 欧洲分组加密算法之Kasumi Kasumi分组密码算法是由欧洲标准机构ETSI(European Telecommunications Standards Institute)下属的安全算法组于1999年设计的,被用于构造A5/3、GEA3、f8和f9算法,参与移动通信系统无线…...
vue使用v-chart的实践心得
开发Vue2和Vue3时,我们常常需要将数据以图表的形式展示给用户,而 V-Chart 作为一个轻量级且易于集成的图表库,是 Vue 开发的首选。这篇文章,我将写一下关于我在使用这方面的心得。 echarts官网:https://echarts.apach…...

Endnote使用笔记——持续更新
(1)如果样式库里没有想要的期刊格式,可以到这个网址进行下载,并放在本地安装Endnote的文件下边的styles文件里: https://endnote.com/downloads/styles/ (2)EndNote导入参考文献时,关…...

Tetragon:一款基于eBPF的运行时环境安全监控工具
关于Tetragon Tetragon是一款基于eBPF的运行时环境安全监控工具,该工具可以帮助广大研究人员检测并应对安全重大事件,例如流程执行事件、系统调用活动、I/O活动(包括网络和文件访问等)。 在 Kubernetes 环境中使用时,…...

CAS单点登录(第7版)23.Webflow 管理
如有疑问,请看视频:CAS单点登录(第7版) Webflow 管理 概述 Webflow定制 CAS 使用 Spring Webflow 对登录和注销协议进行脚本处理。Spring Web Flow 构建在 Spring MVC 之上,并允许实现 Web 应用程序的“流”。流封装…...

word文档中标题的自动编号问题
最近研究了下标题自动编号,记录下来,以备后用。 (1)从编号1开始,如: 1 ------------------------ 标题1 1.1 ------------------- 标题2 1.1.1 ------------------- 标题3 1.1.1.1 ------------------- 标题…...

kkFileView二开之pdf转图片接口
kkFileView二开之Pdf转图片接口 kkFileView二开系列文章:1 kkFileView源码下载及编译2 Pdf转图片接口2.1 背景2.2 分析2.2 接口开发2.2.1 编写Pdf转图片方法2.2.2 编写转换接口 2.3 接口测试2.3.1 Pdf文件准备2.3.2 pdf2Image 3 部署 kkFileView二开系列文章&#x…...

利用亚马逊云科技RDS for SQL Server配置向量数据存储
生成式人工智能(AI)正迎来又一个快速发展期,引起了开发者们的广泛关注。将生成式能力集成到商业服务和解决方案中变得非常重要。当前的生成式AI解决方案是机器学习和深度学习模型逐步进化迭代的结果。从深度学习到生成式AI的质变飞跃主要是由…...
vLLM 部署 DeepSeek 大模型避坑指南
本文基于实战经验,提供从环境准备到性能调优的全流程避坑指南。 一、环境准备:驱动与硬件兼容性 1. NVIDIA 驱动与 CUDA 版本对齐 确保NVIDIA驱动和CUDA版本相互匹配是关键。例如,CUDA 12.x需要至少525.60的驱动版本。 # 使用 nvidia-smi…...

本地部署MindSearch(开源 AI 搜索引擎框架),然后上传到 hugging face的Spaces——L2G6
部署MindSearch到 hugging face Spaces上——L2G6 任务1 在 官方的MindSearch页面 复制Spaces应用到自己的Spaces下,Space 名称中需要包含 MindSearch 关键词,请在必要的步骤以及成功的对话测试结果当中 实现过程如下: 2.1 MindSearch 简…...
【大模型系列】Windows系统上运行大语言模型方式
在Windows系统上运行大语言模型(LLMs)有多种方式,以下是一些具体的方法: GPT4All 简介:GPT4All是一个适用于所有操作系统的LLM框架和聊天机器人应用程序,可以本地运行LLMs,并通过API将其与任何…...

Linux Mem -- Where the mte store and check in the real hardware platform
目录 1 前言 2 MTE tag分类 3 Address tag 4 Memory tag 5 Tag Check 6 Cortex-A710 和 CI-700 系统示例: 1 前言 ARM的MTE允许分配、设置、比较一个 4bit的allocation tag 为16字节粒度的物理地址。当对MTE有一定了解后,应该会产生如下疑问&#…...

连锁企业管理系统的五大核心功能
连锁管理系统对于连锁企业的运营和发展至关重要,以下以核货宝连锁管理系统为例,介绍其五大核心功能: 门店管理功能 门店信息管理:核货宝连锁管理系统可集中管理所有门店的详细信息,包括门店地址、联系方式、营业时间、…...
Docker配置镜像加速-解决黑马商城部署Mysql失败问题
随着 Docker 在容器化应用中的广泛应用,越来越多的开发者选择通过 Docker 来简化开发和部署过程。然而,在使用 Docker 部署应用时,有时会遇到因为镜像下载速度慢或者 MySQL 部署失败等问题,特别是在中国地区,由于网络环…...

Cherno C++ P54 内存:栈与堆
这篇文章我们来谈论一下计算机的内存。在这里,我们着重讨论内存的两个部分:栈与堆。我们需要注意的一点是,这两个概念不是虚拟的,而是在计算机内部真实存在的。它们是我们的CPU当中RAM部分物理上存在的两个区域。我们之所以要重点…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...