PR_Writev¶
从多个缓冲区将数据写入套接字。
语法¶
#include <prio.h>
PRInt32 PR_Writev(
PRFileDesc *fd,
PRIOVec *iov,
PRInt32 size,
PRIntervalTime timeout);
#define PR_MAX_IOVECTOR_SIZE 16
参数¶
该函数具有以下参数
fd
指向套接字的 PRFileDesc 对象的指针。
iov
一个
PRIOVec
结构数组,描述要从中写入的缓冲区。size
iov
数组中PRIOVec
结构的数量。此参数的值不得大于PR_MAX_IOVECTOR_SIZE
。如果超过,则函数将失败,错误将设置为PR_BUFFER_OVERFLOW_ERROR
。timeout
一个类型为 PRIntervalTime 的值,描述整个写入操作完成的时间限制。
返回值¶
以下值之一
正数表示成功写入的字节数。
值 -1 表示操作失败。可以通过调用 PR_GetError 获取失败的原因。
描述¶
调用 PR_Writev 的线程会阻塞,直到所有数据写入完成或写入操作失败。因此,返回值等于所有缓冲区长度的总和(成功时)或 -1(失败时)。请注意,如果 PR_Writev 返回 -1,则部分数据可能在发生错误之前已写入。如果 timeout 参数不是 PR_INTERVAL_NO_TIMEOUT
并且所有数据无法在指定的时间间隔内写入,则 PR_Writev 返回 -1,错误代码为 PR_IO_TIMEOUT_ERROR
。
这是 PRIOVec
的类型定义
typedef struct PRIOVec {
char *iov_base;
int iov_len;
} PRIOVec;
PRIOVec
结构具有以下字段
iov_base
指向缓冲区开头的指针。
iov_len
缓冲区的大小。