版权所有 © 2014 tutorialspoint
vmsplice - 将用户页面拼接入管道
#define _GNU_SOURCE #include <fcntl.h> #include <sys/uio.h> long vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned int flags);
long vmsplice(int fd, const struct iovec *iov, unsigned long nr_segs, unsigned int flags);
vmsplice() 系统调用将 iov 描述的 nr_segs 个用户内存范围映射到管道中。文件描述符 fd 必须引用一个管道。
指针 iov 指向一个 iovec 结构数组,如 <sys/uio.h> 中定义。
struct iovec { void *iov_base; /* Starting address */ size_t iov_len; /* Number of bytes */ };
flags 参数是一个位掩码,由将以下值中的零个或多个值进行按位或运算组成
成功完成后,vmsplice() 返回传输到管道的字节数。发生错误时,vmplice() 返回 -1,并设置 errno 以指示错误。
在传递的段数限制方面,vmsplice() 遵循其他矢量化读/写类型函数。此限制为 <limits.h> 中定义的 IOV_MAX。在撰写本文时,该限制为 1024。
vmsplice(2) 系统调用首次出现在 Linux-2.6.17 中。
splice (2)
tee (2)
广告