首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

linux系统编程之文件IO(二):文件读取写入

一、read系统调用 一旦有了与一个打开文件描述相关连的文件描述符,只要该文件是用O_RDONLY或O_RDWR标志打开的,就可以用read()系统调用从该文件读取字节  函数原型: ssize_t...read(int fd, void *buf, size_t count); 参数: fd :想要读的文件文件描述符 buf : 指向内存块的指针,从文件读取来的字节放到这个内存块中 count...,从这个内存块中读取数据写入 到文件中 count: 要写入文件的字节个数 返回值:如果出现错误,返回-1;如果写入成功,则返回写入到文件中的字节个数 三、ioctl 函数 ioctl用于向设备发控制和配置命令...例如,在串口线上收发数据通过read/write操作,而串口的波特率、校验位、停止位通过ioctl设置,A/D转换的结果通过read读取,而A/D转换的精度和工作频率通过ioctl设置。...有个文件偏移这样的机制,在Linux系统中,随机访问就变得很简单,你所需做的只是将当前文件偏移值改变到有关的位置,它将迫使下一次read()或write()发生在这一位置。

2.5K60
您找到你想要的搜索结果了吗?
是的
没有找到

Linux文件文件IO

管道文件:这是Linux用于进程之间通信的文件,一个进程在管道这一段写入数据,另一个进程在管道的另一端读取数据。管道文件一般是FIFO文件。...例如第一行exec这个文件的信息行。首先,我们看到这行以“-”开头,表示exec是一个普通文件。同时注意到第三行以d开头,这说明new是一个目录文件。...目录的读只代表我们可以读取该目录的文件列表,不能进行其他操作。如果当前打开了一个文件,如果是root用户的进程,那么它肯定能访问该文件。...read函数用于从已打开的文件读取数据 如果read成功,返回读取到的字节数。若已到达文件尾端,返回0。...读取出错返回-1. write函数用于讲数据写入已打开的文件中 如果写入成功,返回以写字节数,否则,返回-1. close函数用于关闭文件 关闭一个文件并释放该进程加在该文件上的所有锁。

3.2K20

Linux文件IO基础

Linux 文件 I/O(Input/Output)基础是 Linux 应用程序开发中的重要组成部分。在 Linux 系统中,文件 I/O 涉及到文件读取和写入,以及文件描述符、系统调用等概念。...以下是 Linux 文件 I/O 的基础知识: 1. 文件描述符 在 Linux 中,每个打开的文件都与一个文件描述符相关联。文件描述符是一个非负整数,表示进程中打开文件的引用。...通常,文件描述符的值为 0、1 和 2,分别代表标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。 2. 打开文件 要在 Linux 中进行文件 I/O,首先需要打开文件。...读取文件 read 系统调用用于从文件读取数据。它接受文件描述符、缓冲区地址和读取的字节数作为参数。...文件和目录操作 Linux 提供了一系列的文件和目录操作函数,可以用于获取和修改文件和目录的属性。

10710

Linux文件IO函数

文件描述符 在Linux下当一个进程打开文件的时候,OS会返回相应的文件描述符,程序为了处理该文件必须使用这个文件描述符。...目录的读只代表我们可以读取该目录的文件列表,不能进行其他操作。如果当前打开了一个文件,如果是root用户的进程,那么它肯定能访问该文件。...fd是文件描述符;buf是缓冲区,用于保存从文件读取的内容。count是读取的字节数。如果read成功,返回读取到的字节数。若已到达文件尾端,返回0。读取出错返回-1。 write函数 ?.../如果没有这一步,那么下面的read无法读取文件内容,因为文件偏移量已经到了字符串结束符处。...注意:在使用Linux的系统调用操作文件的时候,是无缓冲的,这点很重要。当你在做少量,大批次写入的时候效率会很低。因此注意使用缓冲(用数组的之类的暂时保存一下),能提高I/O效率。

1.6K70

Linux文件基础IO

文件IO 文件的常识 基础IO 为什么要学习操作系统的文件操作 C语言对于函数接口的使用 接口函数介绍 如何理解文件 文件描述符 重定向 更新给模拟实现的shell增加重定向功能 为什么linux下一切皆文件...这是从文件读取内容的函数. 第一个参数是文件描述符,第二个参数是从特定文件读取内容到缓冲区,第三个参数是读取多少个,实际上输入的500,如果缓冲区只有50,那么它只会读取50。...所以操作系统看来,只需要调用file就可以了,所以说linux下皆文件。...2.行刷新,行缓存,这个就是相对应显示器,主要是针对人类做使用的,因为我们平时看文字都是一行一行从左到右去读,所以他就是一行一行刷新的, 3.缓冲区满,全缓冲,磁盘文件就是这样的,这个效率也是最快的,...Linux中的FILE结构体: 在/usr/include/libio.h struct _IO_FILE { int _flags; /* High-order word is _IO_MAGIC;

1.2K00

Linux文件IO操作

文件操作 在进行 Linux 文件操作之前,我们先简单了解一下 Linux 文件系统 Linux文件类型 Linux文件类型分为以下这几种: 符号 文件类型 - 普通文件 d 目录文件,d是directory.../main open: No such file or directory 系统IO函数 UNIX环境下的C对二进制流文件的读写有两种体系: fopen,fread,fwrite ; open, read...要想永久改变umask值,则可以修改文件/etc/bashrc,在文件中添加一行umask 000 。...- count:读取数据的大小 返回值: - 成功: >0: 返回实际的读取到的字节数 =0:文件已经读取完了 - 失败:-1 ,并且设置errno 简单应用一下,示例Demo #include <fcntl.h.../main file len:4 linux下的标准输入/输出/错误 在文件IO操作里面一直讲到文件描述符,那我就不得不提一下linux中的标准输入/输出/错误 在C语言的学习过程中我们经常看到的stdin

2.7K30

java IO流之二 使用IO读取存储文件

http://blog.csdn.net/a107494639/article/details/7586440 一、使用字符流,读取和存储纯文本文件。        ...而且我们写的是纯文本文件,所以这里使用字符流来操作,java api提供给我们FileWriter这么一个类,我们来试试:(读取文件同理使用FileReader类) [java] view plain...copy package org.example.io;   import java.io.File;   import java.io.FileNotFoundException;  ...,你好世界 二、使用字节流,读取和存储图片     首先使用输入流读取图片信息,然后通过输出流写入图片信息: [java] view plain copy package org.example.io...        in.close();       }   }   用FileReader 读取文件时,要是文件中含有中文字符会出现乱码问题,File file = new File

1.4K20

数据库读取速度与文件IO读取速度比较

记下 DB 存取与文件存取的差异 本文来源于之前做的一个小程序科技爱好者周刊在文章数据存储上的技术选型思考。 当时想着后期把文章 markdown 文件内容迁移到云数据库通过云函数查询出来显示。...SGA区由数据缓冲区、共享池、重做日志缓冲区、大型池、JAVA池构成 PGA区由排序区、私有SQL区以及堆栈构成 如果我们只是insert一条语句,单纯比较速度,自然是写入文件快,这只是一个简单的IO操作...此时写入数据库的话,首先需要建立连接,这个需要时间,其次要先在内存中SGA进行分析,解析SQL语句,再加上一些必要的操作,最后写入到数据库文件中,这个数据库文件本质上也是一个文件。...而且文本文件只是一个简单的存储,没有检索功能。 所以 如果是简单的配置参数或特别小的数据,可以考虑存储在文件中,读写速度快。...这样的话,因为在上述场景中小程序读取的 markdown 文件不算是大文件所以直接采用文件存储也就未尝不可了。

2.8K30

LinuxLinux文件IO常规操作

前言 Linux 文件 IO 操作指的是在 Linux 系统上对文件进行读取和写入的操作。它是通过与文件系统交互来读取和写入文件中的数据。...在 Linux 中,文件被视为一系列字节的有序集合,每个文件都有一个相关联的文件描述符,用于标识该文件的唯一标识符。文件 IO 操作允许程序从文件读取数据或将数据写入文件。...,说明不是read失败,而是read再以非阻塞方式读取一个设备文件(网络文件),并且文件无数据 write函数 ssize_t write(int fd, const void* buf , size_t...与睡眠状态相对的是运行状态,在Linux内核中,处于运行状态的进程分为两种状态: 正在被调度执行。...读,写使用同一偏移位置 2.使用lseek获取文件大小 3.使用lseek拓展文件大小,要想使文件大小真正拓展,必须要引起IO操作。

19250

Linux】基础IO ——文件(上)

而fp打开的文件为log.txt,所以将msg数据打印到log.txt文件中 ---- 因为Linux中一切皆文件,所以也可以传入stdout(标准输出流)中,stdout也对应一个文件,即显示器文件...return 0; } ---- 从fp中读取到line中,如果当前读取返回NULL说明读取失败 ,返回break 此时运行可执行程序,即可看到对应文件中的内容 3.操作系统如何进行读写文件操作...,通过创建文件并打开文件,发现新文件的权限不正常 ---- 因为在Linux中创建一个文件需要有对应的权限的 int open(const char *pathname, int flags, mode_t...,发现可以追加 系统层面 读取 O_RDONLY : 读取 输入 man 2 read ssize_t read(int fd, void *buf, size_t count); 从文件描述符fd...中将我们想要的数据,按照数据块的方式读取出来 返回值代表多少字节,读取文件结尾为0,失败为-1 #include #include #

68210

浅析 Linux 文件 IO 读写

浅析 Linux 文件 IO 读写 Linux文件IO子系统是Linux中最复杂的一个子系统(没有之一)。...LinuxIO调度器称为evelator(电梯),因为Linus开始实现这个系统的时候,使用的就是电梯算法。...在传统的文件IO操作中,我们都是调用操作系统提供的底层标准IO系统调用函数 read()、write() ,此时调用此函数的进程(在JAVA中即java进程)由当前的用户态切换到内核态,然后OS的内核代码负责将相应的文件数据读取到内核的...IO缓冲区,然后再把数据从内核IO缓冲区拷贝到进程的私有地址空间中去,这样便完成了一次IO操作。...如下图所示: image.png 注意两点: OS的read函数会在内核IO缓冲区中预读取数据,减少磁盘IO操作。

4.1K30

Linux】 基础IO——文件(下)

(cerr) ——文件在系统层的表现,它是一个类 ---- 因为Linux下一切皆文件,所以向显示器打印,本质就是向文件中写入 标准输入---设备文件--->键盘文件 标准输出---设备文件--->...如何理解Linux下的一切皆文件?...内存把数据写到显示器上,属于写入的过程,读取是从键盘中读取的,键盘输入后,操作系统把输入的数据回显到显示器上了,所以显示器只能负责打印 不同的硬件所对应的方法是完全不一样的,打开键盘时,操作系统内部会创建...,来完成对应的读写,不关心底层的差异化 操作系统也有自己的wirte和read,本质上是拷贝,将应用层的数据拷贝到缓冲区里,在调用底层不同设备的方法,所以看起来就是Linux下一切皆文件 4....修改myfile.txt文件内容 关闭文件描述符0,所以scanf读取时会读取log.txt文件中的内容 读取的内容与log.txt文件内容相同 ---- 本来要从键盘中读取,结果现在要在文件读取

2.1K30

Linux 文件IO实例代码

简述 ---- Linux下的所有资源都被抽象为文件,所以对所有资源的访问都是以设备文件的形式访问,设备文件的操作主要包括:打开、关闭、读、写、控制、修改属性等。...下面的示例代码主要是对文本文件的拷贝。...其实对于一些复杂一点的设备,主要操作也是类似,比如摄像头,在linux下也是一个设备文件,打开之后,可以读取摄像头的参数,然后可以读取图像数据,读取到的图像数据可以编码后保存到文件中,这就是录像的过程,...再比如串口的操作,在Linux下,对于串口通信,也是设备文件的读写操作:打开设备文件--->配置参数(波特率、停止位、校验位等)--->读取/写入数据。.../copy copy test 运行结果: $ ls copy copy.c test $ diff copy test $ 运行结果,程序对其自身拷贝了一份为test的文件,用diff命令比较两个文件

1.1K40

java 的 io读取文件里面 的内容

:InputStreamReader 10 java.io.BufferedWriter、 java.io.OutputStreamWriter 11 java.io.File 12 项目中如何读取文件内容...2.3 按照 字符 的方式读取数据的,一次读取一个字符. 这种流是为了方便读取 普通文本文件 而存在的, 这种流不能读取:图片、声音、视频等文件。只能读取 纯文本文件, 连word文件都无法读取。...(掌握) java.io.ObjectOutputStream(掌握) File文件类 java.io.File 补充:Windows/Linux小知识点 Windows:D:\Soft\QQ\Plugin...Linux: D:/Soft/QQ/Plugin 注意: Windows各个文件之间分隔符为:” \ “; Linux各个文件之间分割符为:” / “ 5 java.io.FileInputStream...= null) { readLine 这个读取到的就是每一行数据 }

1.2K10

Linux下的文件IO编程

往期传送门: 史上最全的Linux常用命令汇总(超详细!...超全面)收藏这一篇就够了 Linux下标准IO的这些操作你清楚吗(内附有详细的介绍和例程) 文章目录 文件I/O简介 文件描述符 文件I/O与标准I/O区别 打开文件(open) 关闭文件(close...文件描述符是一个非负整数,Linux为程序中每个打开的文件分配一个文件描述符 文件描述符从0开始分配,依次递增 文件IO操作通过文件描述符完成 注意:每个程序中打开的文件系统会单独分配文件描述符,互相不影响...读取文件(read) read函数用来从文件读取数据: #include ssize_t read(int fd,void *buf,size_t count);...成功时返回实际读取的字节数;出错时返回EOF 读到文件末尾时返回0 buf是接收数据的缓冲区 示例 从指定的文件(文本文件)中读取内容并统计大小 #include

2.4K10

Linux笔记(4)| 文件IO操作

今天主要分享的是Linux中的文件IO,所谓IO,也就是输入输出,也就是文件的读和写。主要涉及到文件的打开,读写和关闭。 先说一些编译环境。...("读取成功\n"); printf("读取了%d个字节\n",ret); printf("读取的内容是"); while(*pread !...(4)linux系统提供了一个函数perror(意思print error),perror函数内部会读取errno并且将这个不好认的数字直接给转成对应的错误信息字符串,然后print打印出来。...如果对一个文件写完之后就去读取它,会发现读出的内容是空的,之所以是空的就是因为文件指针是会在写的时候自动往后移,所以读的时候就是空的。...所以读之前应该先使用lseek函数把指针移到文件起始位置,再去读,才能正确读出内容。 以上就是Linux文件的简单操作。后面将持续更新Linux的其他应用编程。

79930
领券