Skip to content
On this page

Linux_文件IO


标签:linux/文件IO  
  • 文件 I/O ,也叫做非缓冲 I/O (unbufferered I/O)
  • 与操作系统绑定,可移植性差
  • 每个 read, write 都是内核中的一个 systemcall,所以也叫做系统调用 I/O
  • 响应速度快,但标准I/O吞吐量大
  • 标准I/O和文件I/O不可混用(因为为缓冲区的存在,偏移的规则不同)
  • 开发中应尽量使用标准I/O,只有特使需求的时候使用标准I/O
  • 函数接口多在 man 手册的第二部分

文件描述符

文件描述符

read()

c
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);

参数

fd读取count个字节到buf

返回

返回成功读到的字节数,失败返回 -1,重置 errno。

write()

c
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);

params

buf 读取 count个字节到fd

return

lseek()

c
#include <sys/types.h>
#include <unistd.h>

off_t lseek(int fd, off_t offset, int whence);

params

@whence: SEEK_CURSEEK_ENDSEEK_SET

return

Example

c
int
main(int argc, char const* argv[]) {
  char buf[20] = { 0 };

  while (1) {
    memset(buf, 0, sizeof(buf));
    read(STDIN_FILENO, buf, sizeof(buf));
    write(STDOUT_FILENO, buf, sizeof(buf));
  }
  return 0;
}

Reference

https://www.bilibili.com/video/BV1wd4y137fd/?p=13

Last updated: