【Linux基础】系统 I/O 函数:open read write lseek等函数原型、参数说明以及返回值描述

Linux内核入门(二)——open、close、read、write、lseek函数 Linux内核入门(二)——open、close、read、write、lseek函数前言1. open()函数2. close()函数3. read()函数4. write()函数5. lseek()函数 前言 在上一篇博文中,我提到“内核提供一系列具备预定功能的内核函数,通过一组称为系统调用(system call)的接口呈现给用户”,那么所谓的“系统调用”,长什么样子呢,这里就记录几个常见的系统调用函数,我们可以通过这几个函数,向内核提交请求,获取内核函数的服务入口(系统调用表),体验一下从用户态–& 阅读详情

下面是常用的Unix/Linux 系统调用接口,这些函数提供了对文件、设备等资源的访问能力,是 POSIX 标准的一部分。

1. open()

  • 函数原型:
    int open(const char *pathname, int flags);
    int open(const char *pathname, int flags, mode_t mode);
    
  • 参数:
  • pathname:指向要打开或创建的文件路径名的指针。
  • flags:指定文件打开的方式和行为的一系列标志位。多个标志可以通过按位或运算组合在一起。常用的标志包括:
    • O_RDONLY:只读方式打开。
    • O_WRONLY:只写方式打开。
    • O_RDWR:读写方式打开。
    • O_CREAT:如果文件不存在,则创建它(需要与 mode 参数一起使用)。
    • O_EXCL:与 O_CREAT 一起使用,确保在文件已经存在的情况下 open 调用会失败。
    • O_TRUNC:如果文件存在且以写模式打开,则清空文件内容。
    • O_APPEND:每次写操作前将文件偏移量设置到文件末尾。
    • O_NONBLOCK 或 O_NDELAY:对于设备特殊文件,设置为非阻塞模式。
  • mode:当使用了 O_CREAT 标志时,这个参数用来指定新创建文件的权限位(读写执行)。权限位通常通过八进制数来表示,例如 0644 对应的是 -rw-r--r--。
  • 返回值:成功时返回新的文件描述符;失败时返回 -1 并设置 errno。

2. read()

  • 函数原型:
    ssize_t read(int fd, void *buf, size_t count);
    
  • 参数:
    • fd: 文件描述符。
    • buf: 指向用于存储读取数据的缓冲区。
    • count: 要读取的最大字节数。
  • 返回值:
    • 成功时,返回实际读取到的字节数。这可能少于请求的字节数,特别是如果在达到文件末尾或遇到下一个输入记录之前没有更多的数据可读。
    • 如果到达了文件的末尾,并且已经读到了一些数据,则返回一个正值,但小于 count。
    • 如果在调用 read 时正好位于文件末尾,或者尝试从管道或 FIFO 中读取并且写端已经被关闭,则返回0,表示没有更多的数据可以读取。
    • 失败时,返回-1,并设置 errno 来指示错误类型。

3. write()

  • 函数原型:
    ssize_t write(int fd, const void *buf, size_t count);
    
  • 参数:
    • fd: 文件描述符。
    • buf: 指向要写入的数据的缓冲区。
    • count: 要写的字节数。
  • 返回值:
    • 成功时,返回实际写入的字节数。这可能少于请求的字节数,尤其是在非阻塞I/O的情况下,或者当磁盘已满、超出文件大小限制等情况。
    • 如果发生错误,返回-1,并设置 errno 来指示错误类型。

4. lseek()

  • 函数原型:
    off_t lseek(int fd, off_t offset, int whence);
    
  • 参数:
    • fd: 文件描述符。
    • offset: 偏移量。
    • whence: 基准点(SEEK_SET 表示从文件开头,SEEK_CUR 表示从当前位置,SEEK_END 表示从文件末尾)。
  • 返回值:成功时返回新的文件位置;出错时返回 (off_t) -1 并设置 errno。

5. creat()

  • 函数原型:
    int creat(const char *pathname, mode_t mode);
    
  • 参数:
    • pathname: 文件路径。
    • mode: 新文件的访问权限。
  • 返回值:成功时返回文件描述符;出错时返回 -1 并设置 errno。等同于 open(pathname, O_WRONLY | O_CREAT | O_TRUNC, mode)。

6. stat()

  • 函数原型:
    int stat(const char *pathname, struct stat *statbuf);
    int fstat(int fd, struct stat *statbuf);
    int lstat(const char *pathname, struct stat *statbuf);
    
  • 参数:
    • pathname: 文件路径;对于 fstat 是文件描述符。
    • statbuf: 获取文件的相关信息(如大小、权限等),并将结果存储在 statbuf 结构体中。
  • 返回值:成功时返回 0;出错时返回 -1 并设置 errno。
    • 使用 stat 获取文件信息时,若路径是符号链接,则返回符号链接指向的实际文件的信息。
    • 使用 lstat 可以直接获取符号链接本身的元数据而不跟随到其所指向的实际文件。

7. chmod()

  • 函数原型:
    int chmod(const char *pathname, mode_t mode);
    int fchmod(int fd, mode_t mode);
    
  • 参数:
    • pathname: 文件路径;对于 fchmod 是文件描述符。
    • mode: 文件的新权限模式。
  • 返回值:成功时返回 0;出错时返回 -1 并设置 errno。

8. fsync()

  • 函数原型:
    int fsync(int fd);
    
  • 参数:
    • fd: 文件描述符。
    • 强制将文件描述符 fd 指向的文件的所有修改同步到磁盘。(掉电保存)
  • 返回值:成功时返回 0;出错时返回 -1 并设置 errno。
linux系统c读写文件函数open write read lseek用法实例 阅读详情

相关推荐

AlphaFold-multimer 复合物结构预测

是DeepMind开发的AlphaFold项目的一个扩展,旨在预测蛋白质多聚体的三维结构。蛋白质多聚体是由多个蛋白质亚单位相互组装而成的结构,如酶、膜蛋白复合物和病毒颗粒。理解多聚体的结构对于揭示蛋白质的功能和相互作用非常重要。

MurphyStar的博客 5645

学习笔记——Linux的open、write、read、lseek、close函数

目录前言open函数write函数read函数lseek函数close函数总结 前言 open、write、read、lseek、close函数是Linux的常用函数,是对文件的文本操作 下面展开罗列下 说明下,遇到函数不清楚,返回类型不明白,记得man下哦 man 1是普通的shell命令,比如ls man 2是系统调用函数,比如open,write说明 可以看看基本命令 学习笔记——Linux常用命令(自己总结,没有花里胡哨) 接下来看看这几个函数 open函数 放个图,这是通过man手册看到的解

打不倒的程序猿 2076

苏州大学自动化考研842自动控制原理:手把手教你用胡寿松《自控》高效备考(附复试电工/电子/微机原理攻略)

本文详细解析苏州大学自动化考研842自动控制原理备考策略,以胡寿松《自动控制原理》为核心教材,提供三阶段高效学习路径和实战技巧。重点涵盖频域分析、根轨迹绘制等高频考点,并针对机电、光电、轨道三个学院的复试科目(电工电子技术、电子技术基础、微机原理与接口技术)给出差异化备考方案,助力考生全面提升笔试和面试表现。

weixin_42638178的博客 399

文件读写——open函数的参数flags详解

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

主要记录嵌入式学习与开发过程。 4065

【局部路径规划模块地图算法】基于势场地图的VFH、VFH+、VFH*算法(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对基于地图的方法–VFH、VFH+、VFH*算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 1686

基于高德地图的单车路径规划与绘制实战(Vue3 + TypeScript)【拓展:货车路径规划函数、限行检测、城市 Adcode】

✅ 支持单辆车路径规划✅ 自动绘制路线✅ 起点、终点、途经点标注✅ 自动缩放视野至全路径✅ 获取路线距离、时长、过路费✅ 提供清除功能✅ 路线信息保存至本文完整实现了一个基于高德地图 JS SDK + Vue3 + TypeScript的👉单车路径规划与绘制模块。核心亮点:清晰的结构;灵活的扩展性;实时路线信息记录(🚀 你可以很方便地将本模块集成到车联网、调度监控、地图展示类项目中。❤️ 如果这篇文章对你有帮助,别忘了:评论区交流 💬。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 1264

linux系统编程,常见系统函数[open/read/write/lseek/close]

linux系统编程、系统函数  大多数U N I X文件I / O只需用到5个函数:o p e n、r e a d、w r i t e、lseek 以及c l o s e。系统函数介绍函数open()调用o p e n函数可以打开或创建一个文件。=============================================================================...

春秋繁露 4492

句向量(句嵌入)模型sent2vec的训练及应用

本文讨论NLP中的句向量模型(sent2vec),也就是将一个完整的句子映射成一个实数向量的技术。这方面已经发表的成果也是比较多的,本文中所涉及的技术主要源自NAACL 2018的一篇论文,其中提出的sent2vec模型可以理解为词嵌入技术中经典的CBOW方法的扩展,该所谓的扩展中一个重要改进就是引入了n-gram

白马负金羁 1万+

Linux文件操作函数open/read/write/lseek

此类函数定义在头文件:#include <unistd.h> read使用示例: #include <stdio.h> #include <unistd.h> #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> int main() { int read_fd, size; char buffer[1024] = "\0"; .

lanzh_ 500

173、NPU的编译器开发:开源社区贡献指南

本文分享了在NPU编译器开源社区贡献的经验心得。作者通过实际案例(如卷积维度错误、NaN输出等)阐述了NPU编译器开发的特殊性:硬件迭代快、边界条件复杂、厂商代码不可全信。提出有价值的贡献应聚焦硬件适配测试、性能剖析工具和反模式文档三类内容。强调用实测数据沟通、主动承担维护责任、保持代码通用性等社区协作技巧,并建议通过RFC提前沟通、附硬件实测数据等方式提高PR通过率。最后指出,NPU编译器开发是与聪明人共同填坑的过程,鼓励开发者提交"有诚意的代码"而非完美代码。

m0_50546716的博客 35

[QMT量化交易小白入门]-八十九、深度学习训练多维特征进行金融价格行情预测

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 217

open read write lseek写大文件的操作

头文件 #<sys/types.h> #<unistd.h> #include <fcntl.h> #include <stdio.h> 三个系统接口,read,write,lseek 准备阶段: open int fd = open(“filename”,O_RDWR),O_RDWR为文件打开模式,具体查询open()的man手册。 注:fd为文件文件描述符,使用<fcntl.h>中的open()获得 读文件: read 写文件: wr.

m0_50668851的博客 1005

c语言实现求一个矩阵特征值和特征向量

前言 求矩阵的特征值,主要是用的QR分解,在我的有一次博客里,我已经详细地给出了计算的过程,大家有兴趣可以去看下,经过几天的钻研,终于完成了整个的eig算法。下面我将把我的整个代码附上,有不懂的可以问我,欢迎一起讨论学习! 这是对上一次的修改版,上一次写的程序是在C++编译环境下编译的,所以放在c里面编译有些会出错。 最后,如果有不对的地方希望大...

qq_36417014的博客 2万+

Linux C flie操作: open write read lseek close函数分析

Linux C file操作: open write read lseek close函数分析

dragon_cdut的博客 3275

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Linux下系统函数open,read,write,lseek函数

一、简介 1. open 头文件 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 定义函数: int open(const char * pathname, int flags); int open(const char * pathname, int flags...

taw19960426的博客 1872

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Linux/C++文件篇(一) 】标准I/O与文件I/O基础 :一文掌握文件操作的核心

本文深入解析了C/C++中的标准I/O与文件I/O系统。标准I/O通过流抽象和缓冲区机制提高效率,适合常规文件操作;文件I/O直接使用系统调用,无缓冲但更底层灵活。文章详细对比了两者的特性差异、适用场景,并提供了丰富的代码示例演示各种I/O函数的使用方法(如fopen/fclose、read/write等),以及缓冲区管理、文件定位等关键技术要点。最后给出了选择建议:标准I/O适合常规操作和可移植需求,文件I/O适合底层控制和高性能场景。

2501_93095927的博客 3890

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

C Linux系统编程:详解常见的系统调用函数,文件I/O核心:open, close, read, write

系统调用是操作系统提供给用户程序的一组接口,用于请求内核服务(如文件操作、进程控制、内存管理等)。我们通常使用<unistd.h>和<fcntl.h>等头文件来调用这些函数。通过学习和实践openclosereadwrite这四个基础系统调用,我们掌握了在Linux下进行文件I/O操作的核心能力。它们是构建更复杂文件操作、管道、套接字通信等的基石。理解文件描述符的概念、牢记检查返回值、正确处理部分I/O和错误情况、合理使用标志位(如O_APPEND)、管理好文件描述符资源,是编写健壮系统程序的关键。

buyutang_的博客 1372

Linux-C/C++《C/2、文件 I/O 基础》(文件描述符、 open()、close()、write()、 read()、文件读写位置偏移量)

在Linux中,文件I/O是指通过系统调用或命令对文件进行的输入输出操作。Linux操作系统提供了强大的文件操作功能,使得用户和程序可以方便地对文件进行读取、写入、修改和管理。文件I/O指的是对文件的输入/输出操作,说白了就是对文件的读写操作;Linux下一切皆文件,文件作为Linux系统设计思想的核心理念,在Linux系统下显得尤为重要,所以对文件的I/O操作既是基础也是最重要的部分。本章先向大家介绍Linux系统下文件描述符的概念,随后会逐一讲解构成通用。

旅行者的博客 1128

open、 close、 write、 read、 lseek详解

linux系统最常用的API函数就是:open、 close、 write、 read、 lseek 下面我们用man手册看一下这几个函数的原形和用法: man 1 xxx 查 linux shell 命令,man 2 xxx 查 API, man 3 xxx 查库函数 API: open #include <sys/types.h> #include <sys/stat.h&...

qq_33472414的博客 925

Linux系统编程—文件I/O

(1)IO请求的两个阶段:1. 等待资源阶段:IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源;2. 使用资源阶段:真正进行数据接收和发生。(2)在等待数据阶段,IO分为阻塞IO和非阻塞IO:1. 阻塞IO: 资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时);2. 非阻塞IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用。

qq_74811378的博客 1291

深入理解Linux底层文件操作:write、read、open、close、lseek和ioctl命令详解

本文深入解析Linux底层文件操作的核心系统调用,包括write、read、open、close、lseek和ioctl。write用于数据写入,read实现数据读取,open负责文件打开并返回描述符,close关闭文件释放资源,lseek控制文件指针位置,ioctl则用于设备控制。文章详细介绍了每个调用的功能、用法、返回值及注意事项,并提供了代码示例。这些系统调用是Linux文件操作的基础,掌握它们对开发高效文件管理程序至关重要,能帮助开发者更好地进行文件处理和设备交互。

qq_35803412的博客 1428

Linux系统学习篇——open、read、write、close、光标定位lseek

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、open二、read函数原型:三、write函数原型:四、close函数原型:五、lseek函数原型: 前言 Linux当中有句俗语:一切皆文件。即涉及的有关内容都由文件描述符(fd)代替。而对文件的操作,常用的函数就是open、read、write、close。 一、open open所需的头文件: #include <sys/types.h> #include <sys/stat.h>

weixin_47921928的博客 696

linux文件编程(1)—— open、write、read、lseek、阻塞问题(ps文件操作/文件描述符/重定向原理/缓冲区/标准错误)

linux文件编程—— 常用API之open、write、read、lseek的介绍

zhuguanlin121的博客 2138

嵌入式Linux,文件I\O操作基础,函数讲解。

以只读方式打开文件。

YYYYYYJJJJJYYYYY的博客 1218

Linux应用概念(2)——文件IO,描述符,open,write,read,close,Issek

文件 I/O 指的是对文件的输入/输出操作,说白了就是对文件的读写操作; Linux 下一切皆文件,文件作为 Linux 系统设计思想的核心理念,在 Linux 系统下显得尤为重要。

qq_45731032的博客 746

Linux系统学习--文件编程(open,write,read、光标lseek)

Linux文件编程open、read、write操作常用对文件编程的操作如open、read、writeopen解析:write解析read解析补充说明读数据光标位置处理光标解析补充说明: 常用对文件编程的操作如open、read、write open解析: 头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> 函数原型: int open(const char *pa

正弦定理的博客 2158
上一篇: 【C语言】文件I/O的不同方式:文件描述符fd和FILE *
下一篇: 【C语言】标准 I/O 函数:fopen()、fread()、fwrite()等函数原型、参数说明以及返回值描述
思路可以啊
博客等级 码龄6年 91粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值