文件I/O流程基础函数

函数creat

作用:创建一个新文件(只以写方式打开创建的文件

#include<fcntl.h>

int creat(const char *path ,mode_t mode);

参数解释:

           path: 将要创建的文件路径

           mode: 文件权限级别

该函数成功则返回为只写打开的文件描述符,若出错则返回 -1

该函数等效于 open(path,O_WRONLY|O_CREAT|O_TRUNC,mode);

由于creat函数打开的文件只有写权限,如果想要由读权限,则需要先关闭该文件,然后再用open以其他权限打开

 

 

函数read

作用:从打开文件中读取数据

#include<unistd.h>

ssize_t read(int fd,void *buf,size_t nbytes);

参数解释:

           fd:文件描述符(数据源)

           buf:接收数据的缓冲区(数据目的地)

           nbytes:预期接收的数据字节数(一般和buf缓冲区一样大)

返回值:如果没有出错,没有读到文件结尾则返回真实读到的字节数,如果已到文件结尾则返回0。如果出错则返回-1

 

 

函数write

作用:向打开的文件写数据

#include<unistd.h>

ssize_t write(int fd,void *buf,ssize_t nbytes);

参数解释:

           fd:文件描述符(数据将要写入的目的地)

           buf:数据缓冲区(数据源)

           nbytes:期望写入文件的数据字节数(一般和buf缓冲区一样大)

返回值:如果没有出错返回已写入的字节数,出错则返回-1

 

 

函数lseek

#include<unistd.h>

off_t lseek(int fd, off_t offset, int whence);

参数解释:

           fd:打开的文件描述符

           offset:光标的相对移动位置(相对于whence参数)

           whence:光标位置

                                SEEK_SET:将光标移动到距文件开始处offset个字节

                                 SEEK_CUR:将光标移动到距当前位置的offset个字节

                                SEEK_END:将光标移动到距文件结尾的offset个字节

返回值:若成功则返回移动后的偏移量,若出错则返回-1

注意:1.文件偏移量offset可正可负,因此在检测lseek函数是否调用成功时,不能测试它是否小于0,而要测试它是否等于-1

           2.offset偏移量可以大于当前文件长度,这种情况下会在文件种构成一个空洞

重点:1.lseek函数仅将当前的文件偏移量记录在内核中,它并不引起任何的I/O操作,该偏移量用于下一个读写操作

           2.文件空洞并不占用磁盘空间

 

 

函数close

作用:关闭文件描述符

#include<unistd.h>

int close(int fd);

返回值:成功返回0,失败返回-1

注意:当一个进程终止时,内核自动关闭它所有的打开文件,很多程序利用这一功能不用显示的调用close函数关闭打开的文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值