本章学习内容:
1.c语言中fopen、fwrite、fread、fclose等文件操作库函数与linux系统的open、write、read、close等文件操作符的关系
2.linux文件操作系统相关参数介绍
3.实现一个自己的cp操作指令(mycp)
一、c语言文件操作库函数与Linux系统文件操作符区别
C语言中,操作文件的库函数实现本质为通过库函数调用系统的文件操作符
Linux系统中,文件操作的系统调用实现在内核中,直接通过调用系统实现
简单可以理解为fwrite通过操作write实现写操作
二、linux文件操作相关参数介绍
1.通过程序创建一个文件,并设置访问权限
首先要知道open打开文件、write写文件、read读文件、close关闭文件
int open(char*pathname,int flags,mode_t mode)
open返回值为int类型,第一个参数:文件名字,第二个参数:文件操作方式(读、写等),第三个参数:文件权限
文件操作方式(flags)有:O_WRONLY只打开、O_RDONLY只读、O_RDWR读写方式打开、O_CREAT文件不存在创建、O_APPEND文件末尾追加、O_TRUNC清空文件,重新写入等
文件权限:在linux操作面板输入man open下滑查看,此处只讲0600读写权限
2.C代码实现打开(创建)读写文件
(1)创建并向文件写入内容
main函数代码如下
编译后自动创建文件并写入
(2)读文件中的内容
main函数代码如下
这里我们使用num来存放读取的字符的长度,由此可知read返回值为读取的长度
读取文件完成
读出文件a.txt内容,长度为6(这里6的原因为字符串以/0结尾,所以还有一个/0但不显示)
三、 实现一个自己的cp操作指令(mycp)
1.在实现mycp操作指令前我们先实现一个用C语言代码进行文件复制
首先我们随意复制一份别的文件
此处我们复制的文件名称为passwd
main函数如下
运行结果如下
生成newfile文件
newfile文件内容和passwd文件内容一模一样
查看两个文件大小也相等,所以文件复制成功
2.实现自己的操作指令mycp
main函数代码如下
执行mycp
新文件大小与原文件相等
实现成功