扫码加入

IO

加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。 在POSIX兼容的系统上,例如Linux系统,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O,异步I/O),Memory-Mapped I/O(内存映射I/O)等,不同的I/O方式有不同的实现方式和性能,在不同的应用中可以按情况选择不同的I/O方式。

I/O输入/输出(Input/Output),分为IO设备和IO接口两个部分。 在POSIX兼容的系统上,例如Linux系统,I/O操作可以有多种方式,比如DIO(Direct I/O),AIO(Asynchronous I/O,异步I/O),Memory-Mapped I/O(内存映射I/O)等,不同的I/O方式有不同的实现方式和性能,在不同的应用中可以按情况选择不同的I/O方式。收起

查看更多
  • 用FactoryIO创建一个有产品的流水线(2)
    使用软件导入流水线模型,调整视图并添加产品生成器进行位置调整。通过鼠标操作可以旋转、移动和缩放视图,并利用信号标记和播放按钮进行仿真和控制。
  • 分享一个3D模拟调试软件FactoryIO(1)
    FactoryIO是一款直观的设备模拟和调试软件,支持三菱和西门子PLC连接。软件提供入门教程、手册和预设场景,方便编程和调试。通过配置和驱动选择合适的PLC,并可通过通信方式连接设备。视图菜单允许自定义显示设备分类。软件支持从元件库创建流水线并仿真执行。更多详细用法将在后续文章中介绍。
  • 耐达讯自动化Profibus总线光纤中继器:食品饮料行业IO模块通讯的“稳定之锚”
    在食品饮料自动化生产线中,高速、精准的物料输送与工艺控制对通讯系统的稳定性要求严苛。IO模块作为连接传感器与执行器的核心枢纽,需实时传输温度、压力、流量等关键数据至PLC系统。然而,传统Profibus总线常因长距离传输、潮湿环境及设备干扰导致信号衰减,影响生产连续性。耐达讯自动化Profibus总线光纤中继器以“光电转换+工业级防护”技术,为食品饮料产线构建了抗干扰、高可靠的通讯链路。 一、Pr
    317
    02/02 16:55
  • 新品上市:告别IO扩展难题!这款分布式IO系统支持自由拼接,轻松搞定多路采集
    M31-U系列第二代高性能分布式IO主机支持Modbus TCP和RTU协议,配备10/100M自适应双以太网接口,内部总线速度高达1ms,具备开关量及模拟量断网复位特性。支持最多16个IO扩展模块,集成实时状态诊断功能,提供卓越的电磁兼容性和可靠性。
  • 飞凌嵌入式ElfBoard-文件I/O的深入学习之文件锁
    前面有讲过竞争冒险的问题,如果有多个进程对文件进行I/O操作,容易产生竞争状态、导致文件中的内容与预想的不一致的问题,由此引入文件锁。 内核提供的锁机制用于对共享资源的访问进行保护,而文件锁是一种应用于文件的锁机制,当多个进程同时操作同一文件时,对文件上锁,来避免多个进程同时操作同一文件时产生竞争状态。 文件锁可以分为建议性锁和强制性锁两种: 建议性锁本质上是一种协议,程序访问文件之前,先对文件上
  • 飞凌嵌入式ElfBoard-文件I/O的深入学习之I/O多路复用
    I/O多路复用(IO multiplexing)通过一种机制,可以监视多个文件描述符,一旦某个文件描述符(也就是某个文件)可以执行I/O操作时,能够通知应用程序进行相应的读写操作。I/O多路复用技术是为了解决:在并发式I/O场景中进程或线程阻塞到某个I/O系统调用而出现的技术,使进程不阻塞于某个特定的I/O系统调用。 由此可知,I/O多路复用一般用于并发式的非阻塞I/O,也就是多路非阻塞I/O,比
  • 飞凌嵌入式ElfBoard-文件I/O的深入学习之异步I/O
    在I/O多路复用中,进程通过系统调用select或poll来主动查询文件描述符上是否可以执行I/O操作。而在异步I/O中,当文件描述符上可以执行I/O操作时,进程可以请求内核为自己发送一个信号。之后进程就可以执行任何其它的任务直到文件描述符可以执行I/O操作为止,此时内核会发送信号给进程。 异步I/O通常也称为信号驱动I/O。 要使用异步I/O,程序需要按照如下步骤来执行: 1.通过指定O_NON
  • 飞凌嵌入式ElfBoard-文件I/O的深入学习之阻塞I/O与非阻塞I/O
    1.4.1.1 概念 阻塞I/O顾名思义就是对文件的I/O操作是阻塞式的,即假如对某些类型文件(管道文件、网络设备文件和字符设备文件)进行读操作时,如果数据未准备好、文件当前无数据可读,那么读操作可能会使程序阻塞等待,直到有数据可读时才会被唤醒返回。 普通文件的读写操作是不会阻塞的,不管读写多少个字节数据,read或 write一定会在有限的时间内返回,所以普通文件一定是以非阻塞的方式进行I/O操
  • 飞凌嵌入式ElfBoard-文件I/O的了解探究之文件描述符
    open返回得到的文件描述符fd可以进行复制,复制成功之后可以得到一个新的文件 描述符,使用新的文件描述符和旧的文件描述符都可以对文件进行IO操作,复制得到的文件描述符和旧的文件描述符拥有相同的权限。 在Linux系统下,可以使用dup或dup2这两个系统调用对文件描述符进行复制。 1.dup 用于并可以多次复制文件描述符,复制得到的文件描述符与原文件描述符都指向同一个文件表,它们的文件偏移量是一
  • 飞凌嵌入式ElfBoard-文件I/O的了解探究之多次打开文件
    在一个进程中多次打开同一个文件,会得到多个不同的文件描述符fd,在关闭文件时也需要关闭全部的文件描述符。 测试: #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main()
  • 飞凌嵌入式ElfBoard-文件I/O的了解探究之Linux系统的文件管理机制
    静态文件与 inode 文件在没有被打开的情况下一般都是存放在存储设备中,比如硬盘、U盘等存储设备。静态文件则是指:存放在磁盘文件系统中,并且以一种固定的形式进行存放的文件。 文件储存在硬盘上,硬盘的最小存储单位叫做“扇区”(Sector),每个扇区储存512字节(相当于 0.5KB),操作系统读取硬盘的时候,不会一个一个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”
  • 飞凌嵌入式ElfBoard-文件I/O的了解探究之返回错误处理与相关函数
    在程序执行过程中,当判断到某个函数执行失败时,通常会调用return退出程序。在Linux系统下对常见的错误做了一个编号,每一个编号都代表着每一种不同的错误类型,当函数执行发生错误的时候,操作系统会将这个错误所对应的编号赋值给errno变量,每一个进程(程序)都维护了自己的errno变量,它是程序中的全局变量,该变量用于存储就近发生的函数执行错误编号,也就意味着下一次的错误码会覆盖上一次的错误码。
  • 飞凌嵌入式ElfBoard-文件I/O的了解探究之错误的退出操作
    当程序在执行某个函数时出现错误,如果该错误会导致后续步骤无法正常进行,应该在错误发生时立即终止程序的执行,而不是让程序继续运行下去。 在 Linux 系统下,进程正常退出除了可以使用return之外,还可以使用exit、_exit以及_Exit。 1.3.5.1 exit 该函数是一个标准C库函数,函数会执行一些清理工作,最后调用_exit()函数终止进程。 1.头文件 #include <
  • 飞凌嵌入式ElfBoard-文件I/O的了解探究之I/O缓冲
    前面有提到系统IO和标准IO在缓冲方面的区别,针对缓冲部分,有一些概念和操作函数需要了解。 1.3.2.1 内核缓冲  实际上系统IO在进行文件读写时并不会直接访问磁盘设备,而是仅仅在用户空间缓冲区和内核缓冲区(kernel buffer cache)之间复制数据,而内核会将其缓冲区中的数据写入(刷新)到磁盘设备中。 系统调用与磁盘操作并不是同步的,例如write函数并不会等待数据真正写入到磁盘之
  • 飞凌嵌入式ElfBoard-标准IO接口之刷新缓冲
    1.fflush 用于刷新指定文件的stdio输出缓冲区。 2.头文件 #include <stdio.h> 3.函数原型 int fflush(FILE *stream); 4.参数 stream:表示指定的文件,如果为NULL,则表示刷新所有的stdio缓冲区。 5.返回值 成功返回0,失败将返回一个-1,并且会设置errno来指示错误原因。
  • 飞凌嵌入式ElfBoard-标准IO接口之设置缓冲区
    1.setvbuf 用于以对文件的 stdio 缓冲区进行设置,譬如缓冲区的缓冲模式、缓冲区的大小、起 始地址等。 1)头文件 #include <stdio.h> 2)函数原型 int setvbuf(FILE *stream, char *buf, int mode, size_t size); 3)参数 stream:表示指定的文件。 buf:如果不为NULL,那么buf指向si
  • 飞凌嵌入式ElfBoard-标准IO接口之格式化输入
    格式化输入用于从不同输入源中获取数据并根据格式化字符串format转换为对应的格式代码并存储在对应的类型中。 格式化输入函数:即按特定的格式从特定位置上把数据输入到特定的位置之中。 1.scanf 用于从标准输入流stdin读取格式化数据,并根据参数格式将其存储到附加参数所指向的位置。 1)头文件 #include <stdio.h> 2)函数原型 int scanf ( const
  • 飞凌嵌入式ElfBoard-标准IO接口之检查和复位
    调用fread读取数据时,如果返回值小于参数nmemb所指定的值,表示发生了错误或者已经到了文件末尾(end-of-file),但fread无法具体确定是哪一种情况。在这种情况下,可以通过判断错误标志或end-of-file标志来确定具体的情况。 1.feof 用于检查stream所指文件的end-of-file标志是否存在。 1)头文件 #include <stdio.h> 2)函数
  • 飞凌嵌入式ElfBoard-标准IO接口之格式化输出
    将格式化数据写到标准输出,通常称为格式化输出,除了常见的printf外,还有如下四个函数。 1.printf 将格式化数据输出到标准输出。 1)头文件 #include <stdio.h> 2)函数原型 int printf( const char *format, ... ); 3)参数 format:表示C 字符串,包含了要打印的格式化数据。 ...:表示附加可变参数,根据不同的 
  • 飞凌嵌入式ElfBoard-标准IO接口之文件偏移量
    1.fseek 用于设置文件中位置指针的偏移量。 1)头文件 #include <stdio.h> 2)函数原型 int fseek(FILE *stream, long offset, int whence); 3)参数 stream:要操作的文件指针。 offset:表示以whence为起始点的偏移字节数。 whence:表示offset的起始点位置,可以是以下之一: SEEK_S

正在努力加载...