版權所有 © 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)
廣告