Unix C学习笔记7 文件的读写,系统IO标准IO,文件描述符的复制

文件的读写

write函数

把buf中的count字节数据写入fd文件中

read函数 

从fd文件中读出count字节数据存入buf中

进程结束时,操作系统会自动将打开的文件关闭,不关也可以,关闭最保险

 

若不知道ssize_t的类型

gcc -E read.c -o read.i预处理,将宏定义的常量完成替换

vi read.i 后直接输入/size_t,回车,所寻找的内容就会高亮,按n定位下一个

 

文件的随机读写与顺序读写

读写位置在哪,就从哪里开始读或写

读写位置随着读写操作同步变化

lseek函数 人为调整文件读写位置

基准+偏移量,返回值为目标位置(文件读写位置,以文件头为基准的偏移量)

 linux!将world!覆盖

 

文件空洞写入的\0为特殊字符,不同的工具显示不同的形式

txt文件显示的都为字符,0对应的字符为'\0',65对应的字符为'A'

 

主要运用在下载,下载中的文件会有文件空洞,先占大小,随着下载填充内容

系统IO与标准IO

标准库->系统调用

fopen -> open

fwrite -> write

fread -> read

fclose -> close

 

 相同的内容重复一定次数,用标准库的快

调用write函数时切换到内核态,100000次切换到内核态

fwrite建立缓冲区,往缓冲区写完以后调用1次write切换到内核态一次性完成

如果只写一次,就是write快

文件描述符表项的复制

 

文件描述符表中文件描述符fd1=3,fd2=4对应的项为相同的文件表项指针,指向相同的文件表项

 

dup2(fd1,1)表示将文件描述符fd1=3对应的文件表项指针复制到文件描述符1对应的项中,从而3和1有相同的文件表项指针,指向同一个文件表项

printf往1里输出,所以关闭输出缓冲区后,输出到文件中,而不是屏幕上

不关闭输出缓冲区,屏幕和文件中都没有输出

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值