前言
在行进时,也时时有人退伍,有人落荒,有人颓唐,有人叛变,然而只要无碍于进行,则越到后来,这队伍也就越成为纯粹、精锐的队伍了。——鲁迅:
一、文件的打开和创建
在终端输入
man 2 open
Flags :
O_RDONLY : 只读打开 O_WRONLY 只写打开 O_RDWR :可读可写打开
以上的要三个选其中一个,还有其他常数可以选择
O_CREAT 文件不存在的时候可以选择创建,需要第三个参数mode 用其说明文件的权限
O_EXCL 如果同时使用)o_creat,文件已经存在时会返回一个-1的数值啊。
O_APPEND 每次写的时候都加在文件的尾端
由代码可知文件打开会返回一个整型数,这个返回值就可以当成是文件索引的描述符
(该描述符在后续对文件的操作中极其重要!!!)
将描述符打印出来观看结果
在文件存在时 :fd = 3;(返回一个不是-1的数)
将打开的文件删除观察返回值 可以观察到返回值是-1(即文件没有找到并打开)
可以直接在程序中创建文件
观察文件权限
ls -l
r - 可读 w - 可写 x - 可执行
二、文件写入操作
man 2 write
上文我们创建了一个新的文件file 打开文件是空的没有内容
写入Hello_world (要注意包含头文件)
打开file观察是否写入成功
三、文件读取操作:
man 2 read (观察read函数)
用cp指令新建一个文件存放上文代码,在该基础上修改
注意事项 :在文件写入内容时候要注意光标位置,此时光标位置在内容的文末位置,
此时读取文件会在光标后进行读取!!!读取结果会空白!!!
在该程序中,通过重新打开文件的方式让光标重新回到数据起始位,在进行读取!!!
编译程序观察现象
除了上述的重新打开文件移动光标的方法,在Linux中也提供了移动文件光标的函数
man lseek (将文件读写指针相对whence 移动 offset 个字节)
参数 SEEK_SET 文件头的位置
SEEK_END 文件尾的位置
SEEK_CUR 文件当前位置
运行结果一致