Linux:IO接口

目录

    • 系统调用接口
    • 文件描述符
    • 一、open
    • 二、write
    • 三、read
    • 四、lseek
    • 五、close

 之前介绍了IO库函数,本文主要介绍系统提供的IO接口,与IO库函数搭配食用效果更佳。

系统调用接口

 常使用的IO系统调用接口如下:

接口 作用
open 打开指定的文件
write 向指定的文件写入数据
read 从指定的文件读取数据
lseek 跳转指定文件的读写位置
close 关闭指定文件

文件描述符

 系统调用IO接口的操作离不开文件描述符,那么什么是文件描述符?

  在IO库函数中,操作一个文件使用的是文件流指针,可以说文件流指针就是文件的操作句柄。操作句柄就是用来操作东西的手柄,就像操控电视的遥控器一样。

  IO库函数其实就是对IO接口的封装,将IO接口中的文件描述符封装后就变成了文件流指针,因此文件描述符就是IO接口中文件的操作句柄。

一、open

int open(const char *pathname, int flags, mode_t mode)

 作用:用指定方式打开指定文件

  • const char *pathname:要打开的文件名(带路径)
  • int flags:文件的打开方式
  • mode_t mode:文件不存在时创建文件所使用的权限(这里要注意文件掩码的问题)

 返回值:成功返回一个非负整数(就是文件描述符),失败返回-1。

flags选项(前三种必须选择一个):

  • O_RDONLY:只读
  • O_WRONLY:只写
  • O_RDWR:可读可写
  • O_CREAT:文件不存在就创建
  • O_APPEND:写入数据时以追加方式写
  • O_TRUNC:打开文件时清空

二、write

ssize_t write(int fd, const void *buf, size_t count)

 作用:向指定文件写入指定大小的数据。

  • int fd:要向哪个文件写入数据,就传入哪个文件的文件描述符
  • const void *buf:要向文件写入的数据的首地址
  • size_t count:要写入的数据的字节长度

 返回值:成功返回实际写入文件的数据长度,失败返回-1

三、read

ssize_t read(int fd, void *buf, size_t count)

 作用:从指定文件读取指定大小的数据。

  • int fd:要从哪个文件读出数据,就传入哪个文件的文件描述符
  • void *buf:存储读取到的数据的空间首地址
  • size_t count:要读取的数据长度,以字节为单位

 返回值:成功返回实际读取到的数据的长度,出错返回-1

四、lseek

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

 作用:跳转读写位置

  • int fd:文件的操作句柄
  • off_t offset:偏移量
  • int whence:从哪里开始偏移

 返回值:成功返回当前跳转后的位置相对于起始位置的偏移量,出错返回-1

whence选项:

  • SEEK_SET:起始位置
  • SEEK_CUR:当前读写位置
  • SEEK_END:末尾位置

五、close

int close(int fd)

 作用:关闭文件

  • int fd:要关闭的文件的文件描述符

你可能感兴趣的:(Linux,Linux,IO操作,IO,IO接口,系统调用接口)