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

Linux】基础IO

今天我们要学习的是基础IO部分,主要涉及内存和外设之间的数据交互。接下来,就让我们共同探讨这部分内容吧,那我们就开始吧!...本文章重点: 复习C文件IO相关操作 认识文件相关系统调用接口 认识文件描述符,理解重定向 对比fd和FILE,理解系统调用和库函数的关系 理解文件系统中inode的概念 认识软硬链接,对比区别 认识动态静态库...fread ( void * ptr, size_t size, size_t count, FILE * stream ); 以二进制的形式从流中读取count个元素,每个元素的大小为size字节,...fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); 以二进制的形式将ptr存储的数据写入流中,一共写入count...3.read函数 read函数是Linux下的一个系统调用接口,C语言的fread函数的底层就是read。作用为从一个特定的文件流中读取内容。

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

    聊聊Linux IO

    而从步骤3到步骤5中间会涉及到大量 Linux IO 的原理,特别是Page Cache 和 Buffer Cache 等缓存。...Linux IO 缓存体系,stdio和内核缓存的区别,Page Cache和Buffer Cache的区别。 Buffered IO、mmap(2)、Direct IO的区别。...如果用户代码以较小的 size 不断的读或写文件的话,stdio 库将多次的读或者写操作通过buffer进行聚合是可以提高程序运行效率的。...所以后面的讨论基本上是讨论 IO 相关的系统调用和文件系统Page Cache的一些机制。 Linux内核中的IO栈 这一小节来看 Linux 内核的 IO 栈的结构。先上一张全貌图[4]: ?...设备层,通过 DMA 与内存直接交互,完成数据和具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap(2)、Direct IO,这些机制怎么和 Linux IO

    3.2K21

    Linux IO 模型

    fdset 从用户态拷贝到内核态,在高并发下是个巨大的性能开销(可优化为不拷贝); 调用 select 阻塞后,用户进程虽然没有轮询,但在内核还是通过遍历的方式来检查 fd 的就绪状态(可通过异步 IO...在 Linux 2.4 内核前主要是 select 和 poll,自 Linux 2.6 内核正式引入 epoll 以来,epoll 已经成为了目前实现高性能网络服务器的必备技术。...下面看下 epoll 的相关函数 #include // 该 size 已经没有意义, epoll 早期实现中, 对于监控文件描述符的组织并不是使用红黑树,而是hash表 int...epoll_create ( int size ); // epfd: epoll的描述符, epoll_create 的返回值 // fd:要操作的文件描述符 // op:指定操作类型 //...以下是一个简单的 Java AIO 示例 import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer

    22220

    Linux】基础IO认知

    不止是这些的C语言中的对于代码的修改,在Linux操作系统上的echo进行重定向,也能够对文件内容进行修改,所以输出重定向一定是文件操作,并且每次重定向写入的方式是先清空,再写入,其实根本上,这个输出重定向也就是按照...open函数的第一种方式代表的通常都是操作一些已经存在的文件,因为如果直接创建的话,在Linux操作系统中,我们不知道,我们创建的文件的权限是什么,所以说有的时候还会让我们创建的文件的权限出现乱码的情况...由于Linux操作系统一切皆文件,所以其中显示器,键盘的外设,也能够存在于sturct file链表中,所以就有了之前的0,1,2。 对于硬件来说的一切皆文件示意图。

    12010

    聊聊Linux IO(下)

    对应到Linux的Page Cache上所谓Write Through就是指write(2)操作将数据拷贝到Page Cache后立即和下层进行同步的写操作,完成下层的更新后才返回。...Linux下Buffered IO默认使用的是Write back机制,即文件操作的写只写到Page Cache就返回,之后Page Cache到磁盘的更新操作是异步进行的。...磁盘的性能测试 在具体的机器上跑服务程序,如果涉及大量IO的话,首先要对机器本身的磁盘性能有明确的了解,包括不限于IOPS、IO Depth等等。...一般SSD的IO Depth都在32甚至更高,使用32或者64个线程才能跑满一个SSD磁盘的带宽(同步IO情况下)。 具体的SSD原理不在本文计划内,这里给出一篇详细的参考文章[7]。...写在最后 每天抽出不到半个小时,零零散散地写了一周,这是说是入门都有些谬赞了,只算是对Linux下的IO机制稍微深入的介绍了一点。

    3.2K11

    LinuxLinux文件IO常规操作

    前言 Linux 文件 IO 操作指的是在 Linux 系统上对文件进行读取和写入的操作。它是通过与文件系统交互来读取和写入文件中的数据。...在 Linux 中,文件被视为一系列字节的有序集合,每个文件都有一个相关联的文件描述符,用于标识该文件的唯一标识符。文件 IO 操作允许程序从文件读取数据或将数据写入文件。...int fd); 错误处理函数: 与errno相关 printf("xxx error: %s\n",errno); read函数 ssize_t read(int fd, void* buf , size_t...EWOULDBLOCK,说明不是read失败,而是read再以非阻塞方式读取一个设备文件(网络文件),并且文件无数据 write函数 ssize_t write(int fd, const void* buf , size_t...与睡眠状态相对的是运行状态,在Linux内核中,处于运行状态的进程分为两种状态: 正在被调度执行。

    24950

    聊聊Linux IO(上)

    图中描述了Linux下文件操作函数的层级关系和内存缓存层的存在位置。中间的黑色实线是用户态和内核态的分界线。...如果用户代码以较小的size不断的读或写文件的话,stdio库将多次的读或者写操作通过buffer进行聚合是可以提高程序运行效率的。...在Linux下,文件的缓存习惯性的称之为Page Cache,而更低一级的设备的缓存称之为Buffer Cache....综上,既然讨论Linux下的IO操作,自然是跳过stdio库的用户态这一堆东西,直接讨论系统调用层面的概念了。对stdio库的IO层有兴趣的同学可以自行去了解。...所以下篇的讨论基本上是讨论IO相关的系统调用和文件系统Page Cache的一些机制。 (未完待续...)

    2.5K41

    Linux标准IO

    Linux 标准 I/O(Standard I/O)库提供了一组函数,用于进行高级别的文件输入和输出操作。它建立在底层文件 I/O 系统调用之上,为开发者提供了更方便、更高级别的文件处理方式。...以下是一些常用的 Linux 标准 I/O 库函数: 1. 文件指针 标准 I/O 使用 FILE 结构表示文件流,通过文件指针(FILE*)进行操作。...文件读写 size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream); 从文件读取数据到缓冲区。 ptr 是数据缓冲区的指针。...size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream); 将数据从缓冲区写入文件。...\n"); perror("An error occurred"); return 0; } 以上是 Linux 标准 I/O 库的一些高级特性,包括缓冲机制、输入输出重定向和文件描述符的复制

    14910

    Linux】高级IO --- Reactor网络IO设计模式

    其实是有的,在网络编程中,select poll 只支持LT工作模式,而epoll除了LT工作模式外,还支持ET工作模式,不同的工作模式对应着不同的就绪事件通知策略,LT模式是这些IO接口的默认工作模式...其实在tcpServer.hpp讲解完毕之后,Reactor网络库的重点就已经实现完毕了,也就是网络IO层面上的处理连接到来,处理网络数据传输的工作,已经大功告成了。...设置为空串,然后在inbuffer中找LINE_SEP的迭代器位置,找到之后,将报头部分substr截取出来,再将其stoi转换为整数,这样就得到了有效载荷的大小,然后再将截取出来的报头,调用其类内函数size...无论是什么样就绪的事件,每个sock都会有对应的回调方法,所以处理就绪的事件很容易,直接回调connection内的对应方法即可,是读事件就调用读方法,是写事件就调用写方法,是异常事件,则在读方法或写方法中处理IO...我们今天所实现的服务器是半同步半异步的,半同步是说Reactor既保证了就绪事件的通知,同时又负责了IO,半异步指的是,今天的服务器还实现了业务处理。

    21220

    Linux系统-基础IO

    Linux基础IO 零、前言 一、C语言文件IO 1、C库函数介绍 2、stdin/stdout/stderr 二、系统文件IO 1、系统调用介绍 2、系统调用和库函数 三、文件描述符 1、open返回值...dup2系统调用 3、重定向的原理 4、缓冲区和刷新策略 五、文件及文件系统 1、FILE 2、文件系统 3、软硬链接 六、动静态库 1、制作使用静态库 2、制作使用动态库 零、前言 本章主要讲解学习Linux..., size_t size, size_t count, FILE *stream ); size_t fwrite( const void *buffer, size_t size, size_t count...*_lock; #ifdef _IO_USE_OLD_IO_FILE }; 2、文件系统 命令 ls -l 查看文件信息: [root@localhost linux]# ls -l 总用量...]# stat test.c File: "test.c" Size: 654 Blocks: 8 IO Block: 4096 普通文件 Device: 802h/2050d Inode: 263715

    1.4K40
    领券