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

Linux:IO接口

目录

    • 系统调用接口
    • 文件描述符
    • 一、open
    • 二、write
    • 三、read
    • 四、lseek
    • 五、close

 之前介绍了IO库函数,本文主要介绍系统提供的IO接口,与IO库函数搭配食用效果更佳。

系统调用接口

 常使用的IO系统调用接口如下:

接口作用
open打开指定的文件
write向指定的文件写入数据
read从指定的文件读取数据
lseek跳转指定文件的读写位置
close关闭指定文件

文件描述符

 系统调用IO接口的操作离不开文件描述符,那么什么是文件描述符?

  在IO库函数中,操作一个文件使用的是文件流指针,可以说文件流指针就是文件的操作句柄。操作句柄就是用来操作东西的手柄,就像操控电视的遥控器一样。

  IO库函数其实就是对IO接口的封装,将IO接口中的文件描述符封装后就变成了文件流指针,因此文件描述符就是IO接口中文件的操作句柄。

一、open

int open(const char *pathname, int flags, mode_t mode)

 作用:用指定方式打开指定文件

  • const char *pathname:要打开的文件名(带路径)
  • int flags:文件的打开方式
  • mode_t mode:文件不存在时创建文件所使用的权限(这里要注意文件掩码的问题)

 返回值:成功返回一个非负整数(就是文件描述符),失败返回-1。

flags选项(前三种必须选择一个):

  • O_RDONLY:只读
  • O_WRONLY:只写
  • O_RDWR:可读可写
  • O_CREAT:文件不存在就创建
  • O_APPEND:写入数据时以追加方式写
  • O_TRUNC:打开文件时清空

二、write

ssize_t write(int fd, const void *buf, size_t count)

 作用:向指定文件写入指定大小的数据。

  • int fd:要向哪个文件写入数据,就传入哪个文件的文件描述符
  • const void *buf:要向文件写入的数据的首地址
  • size_t count:要写入的数据的字节长度

 返回值:成功返回实际写入文件的数据长度,失败返回-1

三、read

ssize_t read(int fd, void *buf, size_t count)

 作用:从指定文件读取指定大小的数据。

  • int fd:要从哪个文件读出数据,就传入哪个文件的文件描述符
  • void *buf:存储读取到的数据的空间首地址
  • size_t count:要读取的数据长度,以字节为单位

 返回值:成功返回实际读取到的数据的长度,出错返回-1

四、lseek

off_t lseek(int fd, off_t offset, int whence)

 作用:跳转读写位置

  • int fd:文件的操作句柄
  • off_t offset:偏移量
  • int whence:从哪里开始偏移

 返回值:成功返回当前跳转后的位置相对于起始位置的偏移量,出错返回-1

whence选项:

  • SEEK_SET:起始位置
  • SEEK_CUR:当前读写位置
  • SEEK_END:末尾位置

五、close

int close(int fd)

 作用:关闭文件

  • int fd:要关闭的文件的文件描述符

相关文章:

Linux:IO接口

目录系统调用接口文件描述符一、open二、write三、read四、lseek五、close之前介绍了IO库函数,本文主要介绍系统提供的IO接口,与IO库函数搭配食用效果更佳。 系统调用接口 常使用的IO系统调用接口如下: 接口作用open打开指定的文件write向指…...

cron表达式?

简单理解corn表达式:在使用定时调度任务的时候,我们最常用的,就是cron表达式了。通过cron表达式来指定任务在某个时间点或者周期性的执行。cron表达式配置起来简洁方便,无论是Spring的Scheduled还是用Quartz框架,都支持…...

日常任务开发系统

简介 要求 1、人员信息管理:姓名、性别、出生年月、职称、学位、学习或承担的课 2、任务发布模块: 1)任务信息至少需包含:任务名称、任务类型、任务开始时间、任务截至时间、任务需要的人数、任务分值,是否需要提交任务成果等字段 2)可指定任务申领人…...

SQLMap安装教程

注意:在python3环境下安装sqlmap的时候会提示需要在python2的环境下才能安装,其实在python3.6以后也都支持sqlmap了。 sqlmap安装步骤: 一、下载python; 下载地址 https://www.python.org/downloads/ 下载教程参考&#xff08…...

【每日一题】蓝桥杯Day06

文章目录一、星期计算1、问题描述2、思路解析3、AC代码4、代码解析二、考勤刷卡1、问题描述2、解题思路3、AC代码4、代码解析5、算法分析三、卡片1、问题描述2、解题思路3、AC代码4、代码解析5、算法分析一、星期计算 原题链接:星期计算 1、问题描述 本题为填空题&a…...

实体店创业项目 - 开个网咖需要投入多少钱?主要有哪些费用?

创业开个网咖需求投入的资金主要包括场所租金、装饰费用、设备费用、人员薪酬、水电费用等。详细投入多少钱,需求依据不同区域的市场情况和经营策略来确定。一般来说,开一家中等规划的网咖需求投入10万元以上的资金。 主要有哪些费用? 场所租…...

Linux基础命令-ss显示socket信息

Linux基础命令-netstat显示网络状态 ss 一. 命令介绍 先使用手册查看命令介绍信息 NAME ss - another utility to investigate sockets DESCRIPTION ss is used to dump socket statistics. It allows showing information similar to netstat. It can display more TCP and …...

用一个例子告诉你 怎样在spark中创建累加器

目录 1.说明 1.1 什么是累加器 1.2 累加器的功能 2. 使用累加器 3. 累加器和reduce、fold算子的区别 1.说明 1.1 什么是累加器 累加器是Spark提供的一个共享变量(Shared Variables) 默认情况下,如果Executor节点上使用到了Driver端定义的变量(通过算子传…...

ICG-Avidin,吲哚菁绿标记的亲和素,应用:生物成像、生物检测、免疫组织化学、微阵列检测制备纳米胶束或微球或其他纳米粒子装载ICG实现成像。

ICG-Avidin,吲哚菁绿标记的亲和素 中文名称:吲哚菁绿标记的亲和素 英文名称:ICG-Avidin 激发发射波长:785/821nm 性状:绿色粉末 溶剂:水,部分常规有机溶剂 稳定性:-20℃下干燥避光 应用&…...

Promise的理解和使用

Promise是什么 抽象表达 promise 是一门新的技术(ES6规范)Promise 是JS中进行异步编程的新解决方案 具体表达 从语法上来说:Promise是一个构造函数从功能上来说:promise对象用来封装一个异步操作并可以获取其成功/失败的结果 回调函数就…...

TCP

TCP 流量控制 一般来说,我们希望数据传输的快一些,但如果对方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失 流量控制就是让发送方的发送速率不要太快,让接收方来得及接收 利用滑动窗口机制可以在TCP连接上实现对发送方的流量控制 TCP接收方利用自己的接收…...

Python每日一练(20230310)

目录 1. 爬楼梯 ★ 2. 删除无效的括号 ★★★ 3. 给表达式添加运算符 ★★★ 🌟 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方…...

LeetCode-1590. 使数组和能被 P 整除【前缀和,哈希表】

LeetCode-1590. 使数组和能被 P 整除【前缀和,哈希表】题目描述:解题思路一:前缀和,具体看注释。解题思路二:在遍历过程中计算前缀和解题思路三:0题目描述: 给你一个正整数数组 nums&#xff0…...

Java核心类库

Java核心类库类Math(☆☆☆)System(☆☆☆)Object(☆☆☆☆)Objects (☆)BigDecimal(☆☆☆☆)基本类型的包装类(☆☆☆☆☆)算法(☆☆☆☆☆)二分查找冒泡排序递归Arrays(☆☆☆☆)Date (☆☆☆☆☆)SimpleDateFormat(☆☆☆☆☆)LocalDateTime (☆)Throwable 类(☆☆☆☆)Str…...

1110道Java面试题及答案(最新Java初级面试题大汇总)

开篇小叙 现在 Java 面试可以说是老生常谈的一个问题了,确实也是这么回事。面试题、面试宝典、面试手册......各种 Java 面试题一搜一大把,根本看不完,也看不过来,而且每份面试资料也都觉得 Nice,然后就开启了收藏之路…...

DML 添加、修改、删除数据

目录 DML 一、添加数据 1、给指定字段添加数据 2、给全部字段添加数据 3、批量添加数据 二、修改数据 三、删除数据 DML DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。 一、添加数据 1、给指定字…...

千川投放50问(完)!如何跑出高投产?

第四十一问:计划初期成本很高,是否要关掉重新跑?首先看一下是不是初期回传延迟导致的成本偏高。如果成本没有高的,不建议暂停,先观察一段时间数据,给它一点学习时间。当系统积累过足够的模型之后&#xff0…...

每日学术速递3.10

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.RO 1.Diffusion Policy: Visuomotor Policy Learning via Action Diffusion 标题:扩散策略:通过动作扩散进行视觉运动策略学习 作者:Cheng Chi, Si…...

[C/C++]_[初级]_[声明和使用字符串常量和字节常量]

场景 我们需要存储常量的字节数组,并且数组里的字节数据可以是任意数值0-255。怎么存储? 说明 任意字节数组可以使用char或者unsigned char作为数据类型。比如以下的字符串声明。这种字符串数据可以通过strlen(buf)来计算它的长度,它会遇到…...

解Bug之路-Nginx 502 Bad Gateway

前言 事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻。当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在脑中闪现。甚至一些边边角角的现象都能很快的反应过来是为何。笔者读过一些Linux TCP协议栈的源码…...

轻量级代码同步工具codesyncer:P2P架构实现跨设备实时同步

1. 项目概述:一个被低估的代码同步利器如果你和我一样,经常需要在多台开发机、服务器甚至不同的云环境之间同步代码片段、配置文件或者小型项目,那你一定对那种“这台机器上有,那台机器上没有”的混乱感同身受。手动复制粘贴&…...

FPGA边缘视觉方案解析:从芯片选型到多传感器融合实战

1. 项目概述:单芯片FPGA嵌入式视觉与融合分析方案 最近在梳理一些老项目的技术文档时,翻到了Altera(现在已是Intel PSG的一部分)和Eutecus在2015年左右合作推出的一套方案,当时在EE Times上被称作“Single-Chip FPGA-B…...

构建毫秒级实时传输系统:基于flv.js的低延迟架构优化方案

构建毫秒级实时传输系统:基于flv.js的低延迟架构优化方案 【免费下载链接】flv.js HTML5 FLV Player 项目地址: https://gitcode.com/gh_mirrors/fl/flv.js flv.js作为HTML5 FLV播放器的核心技术方案,通过Media Source Extensions实现浏览器端FLV…...

EDA验证与调试:从学术理论到工业落地的核心挑战与自动化未来

1. 从互联网先驱到EDA专家:Andreas Veneris的跨界之路在半导体设计这个高度专业化的领域,Andreas Veneris的经历显得格外独特。他既是多伦多大学电气与计算机工程及计算机科学系的教授,又是EDA(电子设计自动化)公司Ven…...

FILCO架构:动态可重构DNN加速器设计解析

1. FILCO架构设计背景与核心挑战深度神经网络(DNN)加速器设计正面临一个根本性矛盾:专用架构在特定负载下能达到峰值效率,但实际应用中工作负载的多样性日益增长。以自动驾驶系统为例,单个任务流程可能同时包含MLP分类器、Transformer视觉模型…...

初次使用Taotoken模型广场进行选型与切换的直观体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初次使用Taotoken模型广场进行选型与切换的直观体验 对于开发者而言,接入大模型API后,面对的第一个现实问题…...

gqty:零配置强类型GraphQL客户端,颠覆传统开发体验

1. 项目概述:一个颠覆性的GraphQL客户端方案如果你在过去几年里深度参与过前端开发,尤其是与GraphQL API打交道,那么你一定体会过那种“甜蜜的负担”。GraphQL带来的数据查询自由度和类型安全让人着迷,但随之而来的客户端状态管理…...

不止于建模:用COMSOL几何操作优化你的仿真效率(分隔、二维轴对称实战)

不止于建模:用COMSOL几何操作优化你的仿真效率 在工程仿真领域,几何建模往往被视为前期准备工作,但真正的高手知道:建模阶段的每一个决策都会在后续网格划分和求解过程中产生指数级影响。我们曾对比过两个相似的电机散热模型——一…...

C#项目实战:用StackExchange.Redis+RedisDesktopManager构建一个简易用户会话缓存系统

C#实战:基于StackExchange.Redis构建高可用会话缓存系统 在分布式系统架构中,会话管理始终是开发者需要解决的核心问题之一。传统ASP.NET的InProc会话模式在Web Farm环境下会面临一致性挑战,而SQL Server会话状态又难以满足高并发场景的性能…...

PCL圆柱拟合进阶:从模型参数到完整轴线的精准计算

1. PCL圆柱拟合的核心挑战与工业需求 在工业测量和逆向工程领域,圆柱体是最常见的几何特征之一。想象一下汽车发动机的活塞杆、液压缸的活塞筒,或者机械臂的旋转轴,这些关键部件都需要精确的圆柱几何参数。PCL(Point Cloud Librar…...