libuv学习笔记2------以stream的形式操作文件

本文介绍了libuv中的流操作,包括API函数如uv_read_start、uv_write和uv_pipe_init,以及回调函数uv_read_start的alloc_cb和read_cb。通过示例展示了如何使用libuv实现tee命令,实现从stdin读取数据并同时写入stdout和文件。

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

在libuv中,流操作是很多操作的基础。比如读写管道、TCP/UDP套接字。在libuv的流操作中需要对输入持续流进行监控,一旦输入流有新的内容到来,便会进行空间申请、拿取数据、数据处理等一系列的操作。下面以读写管道为例开始介绍libuv的流操作:

1.API函数介绍:

1.1.开始输入流的监控

int uv_read_start(uv_stream_t*,uv_alloc_cb alloc_cb,uv_read_cb read_cb);

参数1:要监控的对象可以是uv_pipe_t、uv_udp_t、uv_tcp_t等。

参数2:回调函数,用于申请存储读到的内容的空间;

参数3:回调函数,用于消息处理。

1.2.往输入流写内容

int uv_write(uv_write_t* req,uv_stream_t* handle,const uv_buf_t bufs[],unsigned int nbufs,uv_write_cb cb);

参数1:写文件流对象;

参数2:要写的目标对象;

参数3:已经初始化完成的指向uv_buf_t结构体的指针;

参数4:一般为1;

参数5:写数据完成后的回调函数。

1.3.初始化管道

int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle, int ipc);

参数1:event-loop;

参数2:与管道关联的对象;

参数3:一般写为0,具体作用在后面进行介绍;

1.4.打开/绑定管道

int uv_pip

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值