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
- 缓冲区的大小。