学习备忘:Linux文件IO基础

        Linux系统中要操作一个文件需要先将其打开,从而获取文件描述符,相当于该文件的句柄,通过获取到的fd找到需要操作的文件从而进行相应的读写操作。

        OPEN函数具有打开文件功能的同时也能创建一个新的文件。

/*open函数需要包含的头文件,可以通过“man 2 open”在命令行查看详情*/
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);//mode用于分类不同用户的权能
//第二条只在创建新文件时使用

        pathname(path路径 name名称),通过const关键字标注的字符串类型,使其保持一定的稳定性。用于表示需要打开的文件或想要创建的文件的路径,绝对路径与相对路径都可。同时他也可以是一个符号链接,会对其进行解引用。

        flags(标志),传入文件访问模式标志或者其他文件相关标志,这些标志原型是枚举体,具体内容可以查看手册。传入多个参数可以用 | 或标志进行组合。

O_RDONLYread only 只读模式打开

必须传入的参数,而且必须三选一

O_WRONLYwrite only 只写模式打开
O_RDWRread write 可读可写模式打开
O_CREAT

create 如果文件不存在

则在pathname标识的地址创建文件

需要传入mode用于标识文件权限

O_DIRECTORYdirectory (名址录)如果 pathname 参数指向的不是一个目录,则返回失败
O_EXCL与O_CREAT结合使用,当文件不存在时创建文件,存在则返回错误用于测试文件是否存在,这样可以兼顾测试和创建两个功能
O_NOFOLLOW如果 pathname 参数指向的是一个符号链接,则直接返回错误不会再解析符号链接类型的pathname

        mode(运行方式),用于指定新建文件的访问权限,只有当 flags 参数中包含 O_CREAT 或 O_TMPFILE 标志时才有效。为000 000 000 000形式,类似chmod指令从后往前分别是其他用户、同组用户、文件所属者、文件特殊权限(这个位一般为0),000三位从前往后读、写、执行。全部读写权可用0777来表示。

int fd = open("./text.c" , O_RDWR | O_CREAT | O_EXCL , 0777);

if(-1 == fd){
        printf(“open error \n”);
        return 1;
}

         返回值:正常打开时返回一个非负整数,失败时返回-1。


        write函数可向打开的文件写入数据。
        

#include <unistd.h>

ssize_t write(int fd, const void *buf, size_t count);

        fd(文件描述符),open函数打开文件后可用获取。

        buf,需要写入的内容,传入对应缓冲区。如“HELLO WORLD”

        count,写入的字节数。

        返回值,如果成功将返回写入的字节数,如果此数字小于 count 参数,可能是超出空间了,错误返回-1。
 


        read函数可从打开的文件中读取数据

#include <unistd.h>

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


        fd(文件描述符),open函数打开文件后可用获取。

        buf,用于储存读取到的数据的缓冲区。

        count,需要读取的字节数。

        返回值,果读取成功将返回读取到的字节数,实际读取到的字节数可能会小count参数,可能是由于已经读取到文件末尾了,后续已经没有内容可以读取了。


        close函数可关闭一个打开的文件

#include <unistd.h>

int close(int fd);

        fd(文件描述符),open函数打开文件后可用获取。

        返回值,如果成功返回 0,如果失败则返回-1。


        lseek函数用于更变文件的读写偏移量。

#include <sys/types.h>
#include <unistd.h>

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

 fd(文件描述符),open函数打开文件后可用获取。

offset, 偏移量,以字节为单位。

whence,用于定义参数 offset 偏移量对应的参照物。

SEEK_SET读写偏移量将指向 offset 字节位置处(从文件头部开始算)
SEEK_CUR读写偏移量将指向当前位置偏移量 + offset 字节位置(offset是有符号数,可正可负)
SEEK_END读写偏移量将指向文件末尾 + offset 字节位置(offset是有符号数,可正可负)

返回值,成功将返回从文件头部开始算起的位置偏移量(字节为单位), 也就是当前的读写位置; 发生错误将返回-1。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值