210106阶段三 文件I/O

一、学习的知识点

Linux 文件I/O

  1. C语言提供的标准库实现文件读写 fopen fclose fwrite
  2. linux 的系统调用 open close write
  3. 标准库函数是所有能够支持C语言的操作系统 提供的统一的读写文件的API函数,可以实现代码的移植
  4. Linux系统调用:Linux系统自己的内核提供了对文件读写的特殊函数。不具备通用性。
  5. 标准库性能更好,整个函数里面做了缓冲区
  6. Linux系统调用API:直接通过操作系统的软中断,调用Linux系统内核API来产生事件读写。

Windows和Linux对文件管理的差异

  1. Linux系统下:所有的设备,都把它看做是一个文件。所有的设备想要使用,都是调用open打开,对设备的读写都是read write
  2. Linux下面所有的设备都有编号:设备号 Linux的dev下面存放所有的设备文件
  3. linux系统API 帮助文档 man 系统调用(如open read write) 或者 man 2 系统调用

文件读写

open系统调用

/int open(const char *path, int flags);int open(const char *path, int flags,mode_t mode);
参数path :文件的名称 可以包含(绝对和相对)路径 flags:文件打开模式path :文件的名称,可以包含(绝对和相对)路径 flags:文件打开模式 mode: 用来规定对该文件的所有者
返回值打开成功,返回文件描述符;打开失败,返回-1打开成功,返回文件描述符;打开失败,返回-1
int fd;
fd = open("/opt/test.txt",O_RDONLY);
if (fd < 0)
{
	perror("open erroe:");
	return -1;
}

write系统调用

/int write(int fd,void *buf,size_t nbytes);
参数fd :要写入的文件的文件描述符 buf: 指向内存块的指针,从这个内存块中读取数据写入到文件中 nbytes: 要写入文件的字节个数
返回值写入成功,返回写入到文件中的字节个数;错误,返回-1

read系统调用

/int read(int fd, void *buf, size_t nbytes);
参数fd :想要读的文件的文件描述符 buf: 指向内存块的指针,从文件中读取来的字节放到这个内存块中 nbytes: 从该文件复制到buf中的字节个数
返回值如果出现错误,返回-1 返回从该文件复制到规定的缓冲区中的字节数 文件结束,返回0

lseek系统调用

通过指定相对于开始位置、当前位置或末尾位置的字节数来重定位 curp,这取决于 lseek() 函数中指定的位置

原型off_t lseek (int fd, off_t offset, int base);
参数fd :需设置的文件标识符 offset :偏移量 base: 搜索的起始位置
返回值返回新的文件偏移值
base文件位置
SEEK_SET从文件开始处计算偏移
SEEK_CUR从当前文件的偏移值计算偏移
SEEK_END从文件的结束处计算偏移

创建目录

mkdir系统调用

用来创建一个称为pathname的新目录,它的权限位设置为mode

原型int mkdir(char *pathname,mode_t mode);
参数pathname:文件的路径名 mode:权限位
返回值调用成功返回0,失败返回-1

二、上课没有听懂或者没有理解的地方

三、当天学习的收获

跨平台编程

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值