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

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的手册页&#xff0c;注意man 2是linux自己的函数的一些手册&#xff0c;man 3是C库的手册 打开手册页之后找到open函数的用法如下&#xff1a; #以下是需要的库文件&#xff0c;man 2 open打开直接…...

利用xtquant高效获取财务数据:量化分析的重要补充

利用xtquant高效获取财务数据&#xff1a;量化分析的重要补充 在量化交易领域&#xff0c;虽然市场行情数据是核心&#xff0c;但财务数据作为企业基本面的重要反映&#xff0c;同样不可忽视。通过深入分析企业的财务报表&#xff0c;投资者可以更好地理解企业的经营状况和未来…...

Unity UI个人总结

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

Javascript的数据类型

Javascript的数据类型 1.基本数据类型1.1七种基本数据类型1.2单独说说BigInt‌1.3其它注意点 2.引用数据类型3.基本数据类型和引用数据类型的区别4.双等于号和三等于号的区别5.Javascript的类型转换机制5.1显示转换(强制转换)5.2隐式转换(1)减、乘、除(2)加(加法要区别算,因为不…...

Day3 25/2/16 SUN

【一周刷爆LeetCode&#xff0c;算法大神左神&#xff08;左程云&#xff09;耗时100天打造算法与数据结构基础到高级全家桶教程&#xff0c;直击BTAJ等一线大厂必问算法面试题真题详解&#xff08;马士兵&#xff09;】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时&#xff0c;我们常常需要将数据以图表的形式展示给用户&#xff0c;而 V-Chart 作为一个轻量级且易于集成的图表库&#xff0c;是 Vue 开发的首选。这篇文章&#xff0c;我将写一下关于我在使用这方面的心得。 echarts官网&#xff1a;https://echarts.apach…...

Endnote使用笔记——持续更新

&#xff08;1&#xff09;如果样式库里没有想要的期刊格式&#xff0c;可以到这个网址进行下载&#xff0c;并放在本地安装Endnote的文件下边的styles文件里&#xff1a; https://endnote.com/downloads/styles/ &#xff08;2&#xff09;EndNote导入参考文献时&#xff0c;关…...

Tetragon:一款基于eBPF的运行时环境安全监控工具

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

CAS单点登录(第7版)23.Webflow 管理

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

word文档中标题的自动编号问题

最近研究了下标题自动编号&#xff0c;记录下来&#xff0c;以备后用。 &#xff08;1&#xff09;从编号1开始&#xff0c;如&#xff1a; 1 ------------------------ 标题1 1.1 ------------------- 标题2 1.1.1 ------------------- 标题3 1.1.1.1 ------------------- 标题…...

kkFileView二开之pdf转图片接口

kkFileView二开之Pdf转图片接口 kkFileView二开系列文章&#xff1a;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配置向量数据存储

生成式人工智能&#xff08;AI&#xff09;正迎来又一个快速发展期&#xff0c;引起了开发者们的广泛关注。将生成式能力集成到商业服务和解决方案中变得非常重要。当前的生成式AI解决方案是机器学习和深度学习模型逐步进化迭代的结果。从深度学习到生成式AI的质变飞跃主要是由…...

vLLM 部署 DeepSeek 大模型避坑指南

本文基于实战经验&#xff0c;提供从环境准备到性能调优的全流程避坑指南。 一、环境准备&#xff1a;驱动与硬件兼容性 1. NVIDIA 驱动与 CUDA 版本对齐 确保NVIDIA驱动和CUDA版本相互匹配是关键。例如&#xff0c;CUDA 12.x需要至少525.60的驱动版本。 # 使用 nvidia-smi…...

本地部署MindSearch(开源 AI 搜索引擎框架),然后上传到 hugging face的Spaces——L2G6

部署MindSearch到 hugging face Spaces上——L2G6 任务1 在 官方的MindSearch页面 复制Spaces应用到自己的Spaces下&#xff0c;Space 名称中需要包含 MindSearch 关键词&#xff0c;请在必要的步骤以及成功的对话测试结果当中 实现过程如下&#xff1a; 2.1 MindSearch 简…...

【大模型系列】Windows系统上运行大语言模型方式

在Windows系统上运行大语言模型&#xff08;LLMs&#xff09;有多种方式&#xff0c;以下是一些具体的方法&#xff1a; GPT4All 简介&#xff1a;GPT4All是一个适用于所有操作系统的LLM框架和聊天机器人应用程序&#xff0c;可以本地运行LLMs&#xff0c;并通过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 系统示例&#xff1a; 1 前言 ARM的MTE允许分配、设置、比较一个 4bit的allocation tag 为16字节粒度的物理地址。当对MTE有一定了解后&#xff0c;应该会产生如下疑问&#…...

连锁企业管理系统的五大核心功能

连锁管理系统对于连锁企业的运营和发展至关重要&#xff0c;以下以核货宝连锁管理系统为例&#xff0c;介绍其五大核心功能&#xff1a; 门店管理功能 门店信息管理&#xff1a;核货宝连锁管理系统可集中管理所有门店的详细信息&#xff0c;包括门店地址、联系方式、营业时间、…...

Docker配置镜像加速-解决黑马商城部署Mysql失败问题

随着 Docker 在容器化应用中的广泛应用&#xff0c;越来越多的开发者选择通过 Docker 来简化开发和部署过程。然而&#xff0c;在使用 Docker 部署应用时&#xff0c;有时会遇到因为镜像下载速度慢或者 MySQL 部署失败等问题&#xff0c;特别是在中国地区&#xff0c;由于网络环…...

Cherno C++ P54 内存:栈与堆

这篇文章我们来谈论一下计算机的内存。在这里&#xff0c;我们着重讨论内存的两个部分&#xff1a;栈与堆。我们需要注意的一点是&#xff0c;这两个概念不是虚拟的&#xff0c;而是在计算机内部真实存在的。它们是我们的CPU当中RAM部分物理上存在的两个区域。我们之所以要重点…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...