在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