Linux系统编程——文件编程

【Linux系统编程】文件IO 【Linux系统编程】文件IO(超详细) 阅读详情

size_t:无符号整数

头文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

//查询命令 man 2 open

函数

  1. int open(const char *pathname,int flags)
  2. int open(const char *pathname,int flags,mode_t mode):打开一个文件
  3. int create(const char* pathname,mode_t mode):创建一个文件
  4. 这三个函数的返回值都是文件的描述符,只有拿着文件的描述符才可以对文件进行相关操作

pathname为所需要打开/创建的文件的名称,
flags:

  • O_RDONLY:只读打开
  • O_WRONLY:只写打开
  • O_RDWR:可读可写打开
  • 以上三个只能制定一个,下列为可选
    • O_CREAT:若文件不存在则创建它,此时需要制定mode参数
    • O_EXCL:如果同时指定了OCREATE,而此文件已经存在,则出错
    • O_APPEND:每次写时,都加到文件的尾端
    • O_TRUNC:打开文件时,如果这个文件中本来是由内容的,而且为只读或只写成功打开,则将其长度截断为0,相当于清空了

Mode:记录待创建的文件的访问权限

  • 权限分为3中,读写执行:rwx对应421
  • 而权限制定时,要指定当前人、同组者和其他组者
  • 0600代表制定当前人具有rw权限,其他人无权限
  • 对于create中的mode有具体的宏定义,以下
    • S_IRUSR 4 可读
    • S_IWUST 2 可写
    • S_IXUSR 1 可执行
    • S_IRWXU 7 可读可写可执行

打开一个文件,当文件不存在时创建

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>

int main()
{
        int fds = open("./file1",O_RDWR);
        printf("%d\n",fds);

        if(fds == -1){
                fds = open("./file1",O_RDWR|O_CREAT,0600);
                if(fds>0){
                        printf("open success\n");
                }
        }

        return 0;
}

将数据写入文件中

头文件

#include <unistd.h>
#include <string.h>
//man 2 write
//man 2 close
//man strlen

函数

  1. ssize_t write(int fd, const void *buf, size_t count);:对fd文件写入buf中的count长度的数据,return写入数据的长度

  2. int close(int fd):关闭文件fd

  3. strlen(const char *s):获取s的长度

#include <unistd.h>
#include <string.h>

int main()
{
        int fds = open("./file1",O_RDWR);
        char *buf = "huanghaibo 123456";
        printf("%d\n",fds);

        if(fds == -1){
                fds = open("./file1",O_RDWR|O_CREAT,0600);
                if(fds>0){
                        printf("open success\n");
                }
        }
        write(fds,buf,strlen(buf));
        close(fds);

        return 0;
}

将数据从文件中读取出来

  1. ssize_t read(int fd, void *buf, size_t count);:读取count个字符填入到buf中,返回读取的字节数
  2. off_t lseek(int fd, off_t offset, int whence);:移动根据whence偏移制定的offset,return 偏移量
    1. SEEK_SET:将光标放到文件首
    2. SEEK_CUR:以当前位置为基准,左为负,右为正
    3. SEEK_END:将光标放到文件尾

实现CP指令

lude <string.h>
#include <stdlib.h>

int main(int argc,char** argv)
{
        printf("%s\n",argv[0]);
        printf("%s\n",argv[1]);
        printf("%s\n",argv[2]);

        //read src
        int fds_src = open(argv[1],O_RDONLY);
        int fds_src_size = lseek(fds_src,0,SEEK_END);

        int fds_des = open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0600);
        printf("fds_des:%d\n",fds_des);

        //move head
        lseek(fds_src,0,SEEK_SET);
        char* buf = (char*)malloc(sizeof(char)*fds_src_size);
        read(fds_src,buf,fds_src_size);
        write(fds_des,buf,fds_src_size);

        close(fds_src);
        close(fds_des);

        return 0;
}

通过程序修改配置文件

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main(int argc,char** argv)
{
	printf("%s\n",argv[0]);
	printf("%s\n",argv[1]);
	
	//read src
	int fds_src = open(argv[1],O_RDWR);
	int fds_src_size = lseek(fds_src,0,SEEK_END);

	//move head
	lseek(fds_src,0,SEEK_SET);
	char* buf = (char*)malloc(sizeof(char)*fds_src_size);
	read(fds_src,buf,fds_src_size);
	
	lseek(fds_src,0,SEEK_SET);
	
	char* p = strstr(buf,"two=");//匹配
	p=p+strlen("two=");
	*p='8';
	
	write(fds_src,buf,fds_src_size);

	close(fds_src);	

	return 0;
}
Linux 系统编程 —— 文件编程 Linux 是什么 -> 操作系统的内核 基于Linux 内核的发布版本:Ubantu、centOs、FreeBSD、Android 计算机系统的架构: 阅读详情

相关推荐

Linux系统环境编程之文件

本文介绍了Linux系统下文件编程的基本操作流程,包括文件创建、读写、光标定位和关闭等API函数的使用方法。主要内容涵盖:1) open函数参数说明及文件权限设置;2) write/read函数实现文件读写;3) lseek函数控制文件指针位置;4) 文件操作的一般步骤及实际应用案例,如实现Linux cp命令、修改配置文件参数以及存储整数、结构体和结构体数组等数据。通过多个C语言代码示例,演示了如何利用系统调用完成文件的自动化操作。

H212202165的博客 1131

linux系统编程——文件编程

标题linux系统编程——文件编程 ps:本文为本人学习记录所用 一、如何创建、修改一个文件 手动修改文件:打开/创建文件→编辑文件→保存文件→关闭文件 linux中使用编程来操作文件,但真正了解如何文件编程是很复杂的,但可以引用系统提供的API 二、linux系统调用的API API名称 操作名 手册命令 打开 open man 2 open 创建 creat man 2 creat 读操作 read man 2 read 写操作 write man 2 write 光标定

admin_plmm的博客 4924

Linux 系统编程之文件编程

Linux 系统编程之文件编程

MRDOCMAN的博客 442

【Linux】文件系统编程

1、errno 文件 常见的文件类型 文件描述符 文件操作的一般过程 1、open():打开或创建一个文件 3、write():写文件 4、read():读文件 5、lseek():文件偏移 几乎所有的系统调用或库函数都会返回某种类型的状态值,以表明是否执行成功 当系统调用执行失败,会设置全局整型变量errno的值,以表明具体的出错原因 如果遇到一个函数不会用,可以用m...

三七 2084

Linux系统编程之文件编程(一)

Linux系统编程之文件编程(一)包括内容:打开/新建文件、读/写文件、关闭文件等。

l_z_y_000的博客 672

2026深度破解:OpenClaw开源AI框架架构与实战全景解析

2026年初,一款名为OpenClaw的开源AI Agent框架以惊人的速度席卷全球开发者社区,短短数周GitHub星标突破20万,成为史上增长最快的开源项目。本文从架构设计、核心原理、代码实现和工程实战四个维度,深度剖析OpenClaw的技术内核,帮助开发者从理解到实践,快速掌握这一革命性的AI开发框架。

fox0329的博客 2373

入门Linux系统编程--文件

文章目录1、文件编程概述2、文件打开及创建3、文件写入操作编程4、文件读取操作5、文件光标移动操作总结 1、文件编程概述 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 2、文件打开及创建 参数说明 #include <sys/types.h> #include <sys/stat.h> #include &l

mantouyouyou的博客 1280

(论文速读)PTV3: 更简单、更快速、更强大的3D点云处理新突破

该论文提出PointTransformerV3(PTv3),通过简化设计实现3D点云处理的效率突破。该研究摒弃复杂注意力机制,转而采用点云序列化和补丁注意力等高效方法,将感受野从16点扩展到1024点,在保持高精度的同时实现3倍速度提升和10倍内存优化。PTv3在超过20个室内外场景任务中取得SOTA结果,ScanNet语义分割达79.4%mIoU,Waymo检测提升3.3%APH。核心创新包括四种空间填充曲线序列化模式和xCPE位置编码,为3D感知的工业应用提供了高效解决方案。

LJ1147517021的博客 1376

Linux系统编程_文件编程

open/fopen、write/fwrite、read/fread、fputc、fgetc、feof

weixin_45650620的博客 1128

OV5640摄像头DVP与MIPI接口配置实战:从30Hz到60Hz的性能优化指南

本文详细解析了OV5640摄像头在DVP与MIPI接口下的60Hz性能优化方法,重点解决720p分辨率下帧率仅30Hz的常见问题。通过精确配置时钟树、传感器寄存器和接口参数,提供DVP与MIPI接口的实战配置代码,并分享调试工具与性能验证技巧,帮助开发者实现稳定的60fps输出。

weixin_29223603的博客 1301

c#.net使用正则表达式验证文本中是否包含手机号码或电话号码?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace RegularPhoneApp { class Program

码农 3584

Linux系统编程:认识文件

1、文件=内容+属性 2、文件分为打开的文件和没打开的文件 (如c中的fopen和fclose) 可以用以下的例子去理解:快递(文件) 有被人(进程)取走的快递(打开的文件)和没被取走的快递(没打开的文件),被人取走的快递研究的是人和快递的关系(进程和文件的关系) ,而没被人取走的快递,他会被暂时安防在菜鸟驿站(磁盘) 他的数量很多(文件非常多) 所以我们打算去取的时候其实我们是会收到一个取件码的(查找该文件的信息) 然后我们根据这个号码比方说3-1113 我们会找到

weixin_51142926的博客 3901

MiniMAX H3官方SKILL三段式提示词模板与本地部署全解

视频生成模型的效果高度依赖于提示词的结构与质量,而提示词工程正是连接自然语言与视觉表达的关键桥梁。在文本模型之外,视频模型对场景、角色、镜头动作的信息层次更为敏感,普通自由描述往往导致画面漂移、风格不稳定。MiniMAX H3 作为社区热议的视频生成模型,通过一套官方 SKILL 三段式提示词模板,将环境、主体、镜头动作分类组织,免API、免推理即可稳定产出风格统一的素材。这一设计不仅降低了提示词编写门槛,也提升了多轮生成的复用性,适合短视频生产、影视概念设计及自动化视频流水线等场景。本文围绕该模板的结构与

weixin_33309048的博客 1174

linux系统编程之文件编程

用一个函数之前我们必须了解其原型,在linux环境下在我们用CTRL+ALT+T调出终端,在终端界面输入man 2 open就可以看到对open函数的说明: 我们在代码上体现一下:打印出来的文件描述符为3,说明成功打开了file1,当然这里是因为我提前用touch file1创建了file1, 那如果文件不存在呢?在原本代码上添加了O_CREAT,并且说明0600权限,其作用就是没有该文件就创建该文件,我先通过rm file1把之前创建的file1给删掉了,在执行修改后的代码,从输出结果可以看

qq_53918454的博客 1594

斗罗大陆叙事体系与战斗系统设计解析

在文学创作与游戏设计中,世界观构建和战斗系统设计是两大核心技术要素。世界观作为故事发生的背景框架,需要融合东西方文化元素并建立量化标准,如《斗罗大陆》中武魂觉醒与魂环等级体系。战斗系统则需突破简单数值对抗,发展出武魂特性、魂技组合与环境互动的三维体系,其中魂导器技术的引入展现了科技与魔法的创新融合。这些设计原理在RPG游戏开发、网络文学创作等领域具有广泛应用价值,特别是对需要长期运营的IP作品,完善的系统设定能有效支撑剧情延展与商业化开发。本文以现象级作品为例,剖析其武魂拟态理论和魂师工业化构思如何成就经典

weixin_29291069的博客 250

无人机巡检提速3倍!YOLOv8n+OpenVINO让Jetson Nano跑25FPS,还能多飞25分钟

摘要(149字): 针对无人机巡检中Jetson Nano算力不足导致的帧率低、首次推理延迟高、续航短等问题,提出YOLOv8n+OpenVINO联合优化方案: 模型轻量化:YOLOv8n参数量仅3.2M(较v8s减少71%),Jetson Nano帧率从8FPS提升至15FPS(原生),绝缘子裂纹召回率仅降3%; OpenVINO加速:AUTO模式动态分配CPU/GPU算力,首次推理延迟从500ms降至200ms,帧率再优化至25FPS; 能效提升:功耗降低40%,单次续航延长25分钟。方案已落地电力/林

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1242

Linux 系统编程学习之文件编程

Linux 系统编程学习之文件编程 文件描述符 (1)在linux系统中,当打开或者创建一个文件时会返回一个文件描述符,在读写文件时,需要将文件描述符作为参数传递给相应的函数。 (2)文件描述符是一个非负整数,是一个索引值 系统调用–打开(open) #include &amp;amp;lt;sys/types.h&amp;amp;gt; #include &amp;amp;lt;sys/stat.h&amp;amp;gt; #includ...

qq_41954557的博客 251

c#算法(5)—最小二乘法(二次曲线拟合)

最小二乘法——二次曲线拟合

qq_34059233的博客 1659

Linux系统编程——文件

如果从文件的指定位置向后偏移过程中已经超过了文件的当前末尾位置,则会自动以'\0'来填充文件内容,从而形成一种被称为"空洞文件" 的特殊文件。offset 要在文件内偏移的距离,单位字节。如果值为整数,则向文件末尾偏移,如果值为负数,则向文件开头偏移。将stream流文件中的文件指针从whence位置开始,偏移offset字节的长度。如果文件不存在,则创建文件。:获取当前文件流指针的具体位置,一般以文件开头到当前指针的字节数为返回值。w+:写读(文件不存在,则创建;w:写(文件不存在,则创建;

m0_62835291的博客 762

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Linux系统编程】常用头文件

在Linux系统编程中,常用的头文件

lyh030105的博客 765

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Linux系统编程第二部分:文件系统

文件系统详解

qq_49354204的博客 1179

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux系统编程——文件 IO 和标准 IO

本文介绍了Linux系统下的文件IO和标准IO机制及其区别。文件IO是直接调用系统接口,不带缓存,依赖Linux系统;标准IO是C库函数,带缓冲区,可跨平台使用。重点讲解了5个核心文件IO函数:open()用于打开/创建文件并返回文件描述符;close()关闭文件;read()/write()进行读写操作;lseek()调整文件指针位置。通过实验代码演示了各函数的使用方法,包括文件创建、读写、内容复制、指针定位等操作。文章还对比了两种IO机制的特点,指出文件IO围绕文件描述符操作,而标准IO通过缓冲机制提高

2301_80366509的博客 1874

Linux文件系统管理编程

Linux文件系统管理编程实验

2301_80823515的博客 1111

Linux系统文件编程

Linux系统中的文件编程操作函数介绍与实例,包括文件描述符的介绍,操作文件相关的API:open、write、read、close以及lseek的使用实例

dearzhangxp的博客 1221
上一篇: 单片机——IIC协议
下一篇: Linux系统编程——进程
GS8FG
博客等级 码龄7年 18粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值