libuv学习笔记1------利用libuv进行读写文件

本文介绍了如何利用libuv进行异步的文件读写操作,详细讲解了uv_fs_open、uv_fs_read、uv_fs_write和uv_fs_close等API的使用,以及相关回调函数的功能。通过官方的cat命令实现代码,展示了libuv如何处理文件读取、写入和关闭的流程,特别指出libuv会自动调整读取字符数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

libuv强调异步的编程风格,包括文件读写也是。下面就来介绍一下利用libuv进行文件读写的例子。

文件读写相关API介绍:

1.打开文件:

uv_fs_open(uv_loop_t* loop,uv_fs_t* req,const char* path,int flags,int mode,uv_fs_cb cb);

参数1:最终被uv_run启动的event-loop,如果只有一个loop的话可以使用libuv提供的默认loop:uv_default_loop();

参数2:与打开文件操作相关联的对象;

参数3:要打开的文件的路径名;

参数4:flag与标准的unix的open函数的flag相同;

参数5:mode与标准的unix的open函数的mode相同,如果忽略此项的话值可为0;

参数6:文件打开成功/失败后所调用的回调函数,函数原型:(*uv_fs_cb)(uv_fs_t* req);

返回值:文件描述符。

2.读文件:

int uv_fs_read(uv_loop_t* loop,uv_fs_t* req,uv_file file,const uv_buf_t bufs[],unsigned int nbufs,int64_t offset,uv_fs_cb cb);

参数1:event-loop;

参数2:与读文件操作相关联的对象;

参数3:实际为int型,文件描述符;

参数4:已经初始化完成的指向uv_buf_t结构体的指针,该结构体实际包含一个指向一个数组的指针以及数组中有效的数据长度。

结构体原型:

typedef struct uv_buf_t {

char* base;

size_t len;

} uv_buf_t;

常用uv_buf_init函数初始化

参数5:一般写1(在官方文档中没找到具体的介绍)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值