【Linux学习笔记】6. Linux系统编程之文件IO介绍

Linux文件I/O

# 系统I/O


1. open()

函数原型:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);

函数参数:

参数意义
pathname打开/创建的文件名
flags文件的打开模式,常用O_RDONLY, O_WRONLY, O_RDWR
mode创建文件时需要指定,用来设置创建文件的权限(rwx)
  • flags的可加选项:O_APPEND、O_CREAT、O_EXCL、O_SYNC、O_NONBLOCK
  • mode的选项:user权限00700(可以是7,4,2,1),group权限00070,other权限00007

返回值:

  • 返回值类型:int
  • 调用成功时返回一个文件描述符fd
  • 调用失败时返回-1,并设置errno
2. read()

函数原型:

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

函数参数:

参数意义
fd即将读取文件的文件描述符
buf存储读入数据的缓冲区
count将要读入的数据的个数

返回值:

  • 返回值类型是:ssize_t,32位机上等同于int
  • 成功时返回读取的字节数
  • 出错时返回EOF,读到文件末返回0
3. write()

函数原型:

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

函数参数:

参数意义
fd即将读取文件的文件描述符
buf要写入的数据缓冲区
count写入数据的个数,大小不应该大于buf大小

返回值:

  • 返回值类型为:ssize_t
  • 成功时返回写入的字节数
  • 出错时返回EOF,读到文件末返回0
4. close()

函数原型:

#include <unistd.h>
int close(int fd);

函数参数:

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

返回值:

  • 关闭成功时返回0,出错时返回EOF.。

说明:

  • 程序在结束时会自动关闭所有打开的文件。
  • 文件被关闭后,再对文件进行任何操作都是无意义的。
5. lseek()

函数原型:

#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fd, off_t offset, int whence);

函数参数:

参数意义
fd文件描述符
offset偏移量,可正可负
whence指定一个基准点,基准点+偏移量等于当前位置
  • whence的选项:SEEK_SET开头、SEEK_CUR当前、SEEK_END末尾

返回值:

  • 返回值类型为:off_t, 32位机等同于int
  • 成功时则返回目前的读写位置, 也就是距离文件开头多少个字节
  • 出错时返回-1, errno 会存放错误代码.

# 标准I/O

需包含头文件#include <stdio.h>


1. fopen()

函数原型:

FILE *fopen(const char *path, const char *mode);

函数参数:

参数意义
path打开/创建的文件名
mode文件的打开模式

关于mode的选项有:r只读,r+读写;w只写,w+读写,a追加写,a+追加读写。其中除了r和r+其他都会在文件不存在时创建文件。

返回值:

  • 成功时返回一个文件流指针:FILE*
  • 失败时返回NULL
2. fread()

函数原型:

 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

函数参数:

参数意义
ptr接收数据的地址,最小尺寸size*nmemb字节
size每次读取的一个单元的大小,单位字节
nmemb读取的单元个数
stream即将读取文件的文件流

返回值:

  • 返回值类型为:size_t,在32位机等价于unsigned int
  • 成功时返回实际读取的单元个数
  • 文件结束或读取出错时返回一个小于nmemb的数
3. fwrite()

函数原型:

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

函数参数:

参数意义
ptr要写入文件的数据的地址
size每次写入的一个单元的大小
nmemb写入的单元个数
stream即将写入文件的文件流

返回值:

  • 返回值类型为:size_t
  • 成功时返回实际写入的单元个数
  • 出错时返回一个与nmemb不同的数
4. fclose()

函数原型:

int fclose(FILE *stream);

函数参数:

  • stream: 要关闭的文件流指针

返回值:

  • 成功时返回0
  • 失败时返回EOF,并设置errno

2022.04.20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值