Linux / Unix IO

本文对比了标准IO和系统IO的特点与应用场景。标准IO适用于跨平台文本处理,基于内部缓存提高小数据块处理效率;系统IO则针对Linux/Unix系统,直接调用内核功能,更适合对性能有高要求的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

IO分类

  1. 标准IO: fopen, fread, fwrite, fseek, fclose, ...
  2. 系统IO: open, read, write, readv, writev, pread, pwrite, close, fstat, fcntl, select,...
  3. 异步IO: aio_read, aio_write, lio_listio, aio_error, aio_return, ...
  4. 存储映射IO: mmap, munmap, madvise, ...

标准IO

  1. 实现最普遍: 各种平台上都有实现
  2. 读写是基于内部缓存的,适合于文本处理等每次操作小块数据的IO操作
  3. 效率较低。需要两次内存拷贝,一次是内核到标准IO的缓存,一次是标准IO的缓存到用户的缓存
  4. 在多线程或是并行情况下,使用起来很困难

 系统IO

  1. 基于Linux/Unix操作系统,由POSIX所定义的通用文件和设备访问原语
  2. 效率较高,直接调用系统内核的功能
  3. 提供对文件和设备的直接访问,fstat, ioctl, fcntl,......
  4. 相对标准IO,编程的难度较大,需要对系统的底层有较为清晰的了解:文件描述符,文件表项,vnode, 阻塞/非阻塞, 读写锁, 多路复用,.....
  5. 支持并行和多线程:读写锁, pread, pwrite, preadv, pwritev,......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值