Linux中的open()、write()与read()函数,超详细

2023-05-16

open()函数:

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

使用open函数需要的头文件:

#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>

open()的返回值:

返回一个文件描述符,当文件成功打开时,返回一个非负整数,当文件打开失败时,返回-1

文件描述符将用于write(),read(),lseek()使用

参数:

const char *pathname:

文件路径名(绝对路径)或者文件名

int flags:

选择打开文件的操作,分别为:

 O_RDONLY   只读

 O_WRONLY   只写

 O_RDWR  可读可写

当然我们可以与上另外一些可选常量,展示不同的功能:

如:O_RDWR | O_CREAT    可读可写且当打开这个文件时,该文件不存在则创建它

 O_CREAT      当打开这个文件时,该文件不存在则创建它,需要搭配第三个参数使用

 O_APPEND     每次往这个文件写新的内容时,新的内容总是加到文件的末端

即打开文件后进行写操作时(调用write()),若该文件原先有内容,则不会覆盖原来的内容,而是在末端添加内容

 O_TRUNC      清空内容         

 O_EXCL       若同时与上该常量与 O_CREAT,当需要打开的文件存在时,open()会返回一个整型数-1

mode_t mode:(可选参数)

文件访问权限的初始值:(0xxx)

可读 r:  4

可写 w: 2

执行 x:  1

write()函数:

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

使用write函数需要的头文件:

#include <unistd.h>

write()的返回值:

写入成功时,返回写入的字节数(零表示没有任何内容)

如果const void *buf为零,并且fd引用常规文件,则write()可能会返回-1

如果检测到,或未执行错误检测,则将返回0,而不进行任何更改

参数:

int fd:

使用open()时返回的文件描述符

void *buf:

内存,一般传内存地址,如数组名,指针名)

size_t count:

写入字节数

 进行完写操作后,光标会停在刚写入的内容末端

read()函数:

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

使用read函数需要的头文件:

#include <unistd.h>

read()的返回值:

成功时,返回读取的字节数(零表示结束)

出现错误时,返回-1

参数:

int fd:

使用open()时返回的文件描述符

void *buf:

内存,一般传内存地址,如数组名,指针名

size_t count:

读取字节数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux中的open()、write()与read()函数,超详细 的相关文章

随机推荐

  • 索引算法原理解析(B-tree以及磁盘存储原理)

    刚开始学习的时候 xff0c 百度去查 xff0c 但发现好多说得太复杂不好理解 xff0c 结合各个文章总结一下 xff08 建议大概看文字 xff0c 不理解不要紧 xff0c 然后再看图的执行步骤然后在结合文字 xff0c 这样一切就
  • C语言-----结构体内存对齐

    结构体内存对齐规则 xff1a 第一个成员在结构体变量偏移量为0 的地址处 其他成员变量要对齐到某个数字 xff08 对齐数 xff09 的整数倍的地址处 对齐数 61 编译器默认的一个对齐数与该成员大小中的较小值 vs中默认值是8 Lin
  • dpi计算 density 取值范围

    PPI DPI计算公式 Density 61 sqrt span class token punctuation span span class token punctuation span span class token car wp
  • Repo 流程

    First repo init creates the repo directory clones the git repository https android googlesource com tools repo to repo r
  • *** buffer overflow detected ***: terminatedAborted (core dumped)解决

    在执行一个程序的时候出现了下面的这个错误 xff0c 明明在Ubuntu下面已经编译好了 xff0c 执行的时候除了问题 xff0c 于是换了台电脑尝试还是一样 buffer overflow detected terminated Abo
  • 虚拟机Ubuntu远程启动Jetson nano RVIZ图形界面失败

    INFO 1644470251 178517 Rosapi started map manager 6 process has finished cleanly log file home jetson ros log fb3115c6 8
  • YOLOv5训练自己的数据集实现视频的识别

    写在前面 我本来是使用这个模型进行手写签名的定位 xff0c 但是因为比赛的主办方原因 xff0c 数据不允许公开 xff0c 所以我使用动物世界的一段开头视屏来制作我的数据集 这整个模型跑通的过程中 xff0c 我参考了很多不错的博客 x
  • stm32---OLED(SSD1306)

    OLED模块优缺点 优点 xff1a 尺寸小 xff0c 分辨率高 xff0c 低压3 3V就可工作 xff0c 支持多种接口方式 xff0c 该模块提供了总共4种接口包括 xff1a 6800 8080两种并行接口方式 4线的穿行SPI接
  • stm32---ADC模数转换

    ADC xff1a 模数转换器 xff0c 将模拟信号 xff08 0v xff0c 3v xff0c 6v等 xff09 转换为表示一定比例电压值的数字信号 xff08 1 xff0c 2 xff0c 3等 xff09 STM32F10x
  • stm32---DMA

    DMA 全称Direct Memory Access xff08 直接存储器访问 xff09 xff0c 把一个地址空间的值 复制 到另一个地址空间 xff0c 使用DMA传输方式无需CPU直接控制传输 xff0c 通过硬件为RAM和IO设
  • STM32通信---CAN

    一 CAN是什么 xff1f CAN xff0c 全称为 Controller Area Network xff0c 即控制器局域网 xff0c 是一种多主方式的串行通讯总线 xff0c 是国际上应用最广泛的现场总线之一 二 CAN的起源
  • 计算机网络学习笔记3-抓包工具的使用

    Wireshark win64 2 6 2的使用 安装一路next 在发送数据之前 运行抓包工具 当数据发送之后 记得停止抓包
  • linux运行java项目的shell脚本

    bin bash WORKDIR 61 home xiaohong Baowen cd WORKDIR WEB INF classes for file in 96 ls WORKDIR WEB INF lib jar 96 do CLAS
  • 基于STM32F103的智能门禁系统

    0 前言 本人大二软工菜鸟一枚 xff0c 大神不喜勿喷 1 功能演示 点这里功能演示 2 硬件选型 序号名称备注1STM32F103C8T6开发板用于主控2AS608指纹模块指纹解锁3RFID RC522射频模块刷卡解锁40 96寸四针O
  • uboot的环境变量相关源码分析

    一 uboot的环境变量基础 1 1 环境变量的作用 1 让我们可以不用修改uboot的源代码 xff0c 而是通过修改环境变量就可以影响uboot运行时的一些特性 譬如说修改bootdelay环境变量就可以更改系统开机自动启动时倒计时的秒
  • uboot移植Linux-SD驱动代码解析

    一 uboot与linux驱动 1 1 uboot本身是裸机程序 1 狭义的驱动概念是指 xff1a 操作系统中用来具体操控硬件的代码叫驱动 广义的驱动概念是指 xff1a 凡是操控硬件的代码都叫驱动 2 裸机程序中是直接使用寄存器的物理地
  • 移植三星官方的uboot到x210

    1 移植前的准备工作 1 1 三星移植过的uboot源代码准备 1 三星对于S5PV210的官方开发板为SMDKV210 xff0c 对应移植的 uboot smdkv210 tar bz2 1 2 SourceInsight准备 1 移植
  • 4g模块与51单片机通信

    本文硬件选自忆佰特的4g模块和老陈的上官一号 第一步先使用电脑配置4g模块 xff0c 配置好后再与51单片机进行接线完成通信 xff0c 需要提前插入SIM卡 xff0c 接线如下 通电后模块右下角会亮起红灯 xff0c 并且右上角四颗l
  • 用51单片机IIC协议OLED显示汉字

    接线如下 xff1a IIC协议 xff1a xff08 IIC全称Inter Integrated Circuit 集成电路总线 xff09 由PHILIPS公司在80年代开发的两线式串行总线 xff0c 用于连接微控制器及其外围设备 I
  • Linux中的open()、write()与read()函数,超详细

    open xff08 xff09 函数 xff1a int open const char pathname int flags mode t mode 使用open函数需要的头文件 xff1a include lt sys types h