Linux 文件IO操作

article/2025/10/5 14:18:02

概述

本片文章将会主要介绍四个IO函数:开关读写

open函数

  • open 函数的输入参数是 open(char* ,flag ,[mode])
  • 第一个参数表示的是打开文件的路径文件名
  • 第二个参数表示的是打开的方式,见下表
    打开方式描述
    O_RDONLY只读
    O_WRONLY只写
    O_RDWR读写
    O_CREAT创建
    O_EXCL文件不存在则创建(可以防止重复创建)
    O_TRUNC擦除文件内容再打开
    O_APPEND追加方式打开(不会清除文件内容)
  • 第三个参数表示的是文件的权限,但是注意输入权限要经过umask掩码掩盖
  • 返回值:文件创建失败返回-1,创建成功返回文件ID(文件描述符)

通过open函数来实现touch

#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"
int main(int argc ,char *agrv[]){int fd;fd = open("./file_been_touched",O_CREAT|O_EXCL,0777);if(fd<0){printf("failed");return -1;}else{printf("sucess");return 0;}
}

write函数

  • write函数的输入参数有三个:写到哪里去,写什么,写多少
  • 返回值是实际上写的字节数
  • 程序示例
    char buf[]="this is kafen !";
    int fd2 = write(fd,buf,sizeof(buf));
    printf("====%d===\n",fd2);
    

read函数和lseek函数

  • 读函数有三个参数:从哪里读,读到哪里去,读多少read(fd,buf,size)

  • 当直接去读文件中的内容的时候,由于文件指针的偏移,一般情况下是读不到内容的,需要借助lseek函数

  • lseek函数有3个参数文件指针,偏移量,当前位置

  • lseek成功的返回值是文件的当前位置

    当前位置参数描述
    SEEK_SET当前为文件开头
    SEEK_CUR当前为文件指针
    SEEK_END当前为文件结尾

使用文件操作函数实现cp命令

#include "stdio.h"
#include "unistd.h"
#include "fcntl.h"
#include "string.h"int main(int argc,char *argv[]){int rd_fd,wr_fd;char read_buf[128]={0};int rd_ret=0;if(argc<3){printf("please input src file and des file\n");return -1;}rd_fd=open(argv[1],O_RDONLY); //打开第一个输入参数文件,模式为只读if(rd_fd<0){printf("open failure");return -2;}printf("open success\n");wr_fd=open(argv[2],O_WRONLY);//打开第二个输入参数文件,模式为致只写if(wr_fd<0){printf("open failure");return -3;}printf("open success");while(1){rd_ret=read(rd_fd,read_buf,128); //读src文件中的内容,每次读128个if(rd_ret<128){ //剩下的字符小于128个,证明是最后一次break;}	write(wr_fd,read_buf,rd_ret);//把缓存中的字符拷给des文件}memset(read_buf,0,128);//清除缓存中的文件write(wr_fd,read_buf,rd_ret); //写最后的不足128个字符的数据close(rd_fd);//关闭src文件close(wr_fd);//关闭des文件
}

diff函数

  • 比较文件之间的差异
  • diff file1 file2

文件IO和标准IO

标准IO中的相关函数不仅可以读写普通文件,也还可以向标准输入输出中读或写
在这里插入图片描述

三个buffer

在这里插入图片描述

关于printf

  • printf遇到\n时会将全体缓存的内容谢翱内核中,即调用了系统调用函数
  • 库缓存写满时,会把lib buffer的内容写到kernel buf

http://chatgpt.dhexx.cn/article/RwvHyW6A.shtml

相关文章

简述IO操作

IO java.io中最主要的五个类就是InputStream、OutputStream、Reader、Writer、File。 从传输方式角度来说&#xff0c;可以将IO分类为&#xff1a; 一&#xff1a;File File类的对象主要用来获取文件本身的一些信息&#xff0c;例如文件所在的目录、文件的长度或文件读写权…

Java文件IO操作及案例

文章目录 一. 文件概述1. 狭义和广义上的文件2. 文件的分类3. 文件的路径 二. 针对文件系统的操作1. File类的属性和构造2. File类的获取操作3. File类的判断操作4. 文件的创建和删除5. 其他的常用方法 三. 对文件内容进行读写1. IO流对象2. 文件的读操作3. 文件的写操作4. Sca…

java IO操作

系列文章目录 第一章 万事万物皆对象 第二章 java构造器 第三章 java访问权限 第四章 java初始化 第五章 java继承 第六章 java重载与重写 第七章 java接口和抽象类 第八章 java数组 第九章 java内部类 第十章 java时间操作 第十一章 final关键字 第十二章 java字符串 第十三章…

Linux基础 IO操作

一、IO接口的基本认识与使用 在c语言中&#xff0c;我们对文件用fopen&#xff0c;fread&#xff0c;fwrite&#xff0c;fclose等等c语言标准库函数来进行操作&#xff0c;实际上这些库函数是对系统调用接口的一个封装&#xff0c;目的是操作简单&#xff0c;方便编程。 以下…

Java中的IO操作

IO 操作是我以前不太理解的操作。总是觉得很神奇&#xff0c;然后一脸懵逼。今天终于鼓起勇气&#xff0c;认真的学习IO方面的知识。有理解不妥当或者不正确的地方&#xff0c;还请各位大佬指正。 一、java的io发生在哪&#xff1f; 这个问题&#xff0c;我们必须首先明确下。…

基础IO-文件IO操作

目录 1.C语言文件IO相关操作&#xff08;库函数IO接口&#xff09; 2. 系统调用IO接口 1.C语言文件IO相关操作&#xff08;库函数IO接口&#xff09; fopen--打开文件&#xff0c;返回一个文件的操作句柄&#xff0c;有了句柄才能对指定的文件进行操作。 FILE *fopen(char *p…

Java文件IO操作

目录 一、了解什么是文件 狭义的文件&#xff1a; 广义的文件&#xff1a; 二、文件的路径 ①文件的绝对路径 ②文件的相对路径 三、Java对于文件的操作 File类的构造方法 File类的普通方法 四、对于文件的内容操作 ①FileInputStream&#xff08;文件输入流&#xf…

IO操作

一、简介 IO流是用来处理设备之间的数据传输的&#xff0c;数据一般储存在设备上 设备&#xff1a;硬盘&#xff0c;光盘&#xff0c;内存等等&#xff0c;内存是临时储存的 Java对数据的操作是采用流的方式 按照操作的数据分为&#xff1a;字节流和字符流 暗照流向&#x…

Java基础--IO操作

一、IO原理及分类 一、IO原理 1、I/O是Input/Output的缩写&#xff0c;I/O技术是非常实用的技术&#xff0c;用于处理设备之间的数据传输&#xff0c;如读写文件&#xff0c;网络通信等。 2、java程序中对于数据的输入/输出操作一般都是以流的方式进行 3、java.io包下提供各…

关于I/O操作

https://blog.csdn.net/deram_boy/article/details/51191425 提及这个&#xff0c;就想到了各种文件操作&#xff0c;这种流&#xff0c;什么reader 啊&#xff0c; writer啊&#xff0c;buffer啊&#xff0c;file啊。但是综合的东西与总结&#xff0c;只是曾经了解。因为工作…

IO操作概念

IO&#xff1a;输入输出&#xff0c;对程序的输入与输出 文件&#xff1a;一组有关数据的集合 文件名&#xff1a;这组数据的名字 linux系统中所有文件均属于文件&#xff08;通过文件系统进行管理&#xff09; 按类型分类&#xff1a; 1、普通文件 &#xff08;…

I/O操作

前言 I/O操作即操作存储器&#xff0c;所以想了解I/O操作&#xff0c;需要了解一点存储器相关知识点。 计算机存储器 存储器是计算机的核心部件之一&#xff0c;在完全理想的状态下&#xff0c;存储器应该要同时具备以下三种特性&#xff1a; &#xff08;1&#xff09;速度…

操作系统_04_IO相关(个人总结)

声明: 1. 本文为我的个人复习总结, 并非那种从零基础开始普及知识 内容详细全面, 言辞官方的文章 2. 由于是个人总结, 所以用最精简的话语来写文章 3. 若有错误不当之处, 请指出 软硬链接 软链接(快捷方式): 删除原文件时, 软链接则失效 硬链接…

gcc 命令

gcc 命令 GCC 编译器 gcc 命令格式 gcc 选项 文件名字主要选项 -c&#xff1a; 只编译不链接为可执行文件&#xff0c;编译器将输入的.c 文件编译为.o 的目标文件。-o&#xff1a; <输出文件名>用来指定编译结束以后的输出文件名&#xff0c;如果不使用这个选项的话 G…

Ubuntu Linux gcc的常用命令

目录 一、gcc简介 二、简单的gcc编译 1 预处理 2 编译为汇编语言代码 3 汇编 4 连接 三、多个程序文件的编译 四、检查错误 五、连接库文件 1 编译成可执行文件 2 链接 3 强制链接时使用静态链接库 六、总结 一、gcc简介 Linux系统下的Gcc&#xff08;GNU C Compi…

Linux GCC 编译详解

文章目录 一、GCC 编译器简介二、GCC 工作流编程语言的发展GCC 工作流程gcc 和 g 的区别 三、使用 GCC 编译GCC 编译格式GCC 编译流程多个源文件编译 一、GCC 编译器简介 首先&#xff0c;什么是编译器呢&#xff1f; 我们可以使用编辑器&#xff08;如 linux 下的 vi、window…

gcc编译命令的常用选项——强烈推荐大家使用 -Wall 选项

C程序编编译的过程分为如下四个阶段 1.预处理&#xff1a;头文件展开&#xff08;#include&#xff09;、宏替换&#xff08;#define&#xff09;、条件编译&#xff08;#ifdef&#xff09;(.i)使用预处理器&#xff08;预处理阶段处理的都是以#开头的代码&#xff09; 2.编译…

Linux(gcc编译原理、过程以及常用调试命令)

PS&#xff1a;红色字体表示重点&#xff0c;绿色字体表示重要标题&#xff0c;块引用中表示Linux终端中的命令。 1.gcc / g的安装 命令&#xff1a;sudo apt install gcc /gcc 2.gcc编译连接 //main.c文件 &#xff08;1&#xff09;预编译 ①删除所有的“#define”&#…

Linux中gcc编译步骤

我们这里以C语言为例&#xff0c;看看C语言程序在Linux中编译执行的详细步骤 1.创建一个.c文件 2.写入一些简单的代码 我们使用gcc -E filename.c -o filename.i 命令对程序先进行预处理&#xff1a;处理头文件、宏定义&#xff0c;接下来我们修改一下头文件&#xff0c;使用错…

Linux GCC常用命令

目录 一、示例一 1.简单编译 1.1预处理 1.2编译为汇编代码 1.3汇编 1.4连接 2.多个程序文件的编译 3检错 4库文件连接 二、示例二 1.准备hello.c 2.预处理 3.编译 4.汇编 5.链接 6.分析ELF文件 6.1ELF文件的段 6.2反汇编ELF 一、示例一 1.简单编译 创建文件mkd…