nginx中writev函式的使用

2021-09-05 03:54:08 字數 797 閱讀 3224

nginx的**非常的優秀,之前已經介紹了sendfile的使用來實現「記憶體零拷貝」,今天我又理解了一下writev函式的使用,以nginx-1.6.0為例,在src/os/unix/ngx_writev_chain.c的113行,如下圖:

可以man 2 writev看下函式的概念(與writev相對應的還有乙個readv)writev是讀取多個不連續的buffer然後集中寫入。

#include ssize_t readv(int fd, const struct iovec *vector, int count);

ssize_t writev(int fd, const struct iovec *vector, int count);

如何實現

#include #include #include int main(int argc,char *argv)

首先建立3個檔案,file1(9個位元組),file2(9個位元組),file3(空檔案),程式將file1和file1讀入buffer然後將兩段buffer集中寫入新的fd中

編譯測試吧

writev和write函式區別就是在於多個非連續buffer的讀取後寫入,當負載大的時候就可以很好的體現出效能效果了。

nginx中writev函式的使用

nginx 非常的優秀,之前已經介紹了sendfile的使用來實現 記憶體零拷貝 今天我又理解了一下writev函式的使用,以nginx 1.6.0為例,在src os unix ngx writev chain.c的113行,如下圖 可以man 2 writev看下函式的概念 與writev相對應...

writev 函式使用

其中fd為乙個檔案描述符,vector為乙個陣列,陣列中每個元素都包含了乙個位址和乙個偏移量,count表示陣列的個數 以下 服務端利用writev 從乙個stadus line陣列和另外乙個本地檔案讀取檔案,併發送到客戶端 include include include include inclu...

高階I O之readv和writev函式

readv和writev函式用於在一次函式呼叫中讀 寫多個非連續緩衝區。有時也將這兩個函式稱為散布讀 scatter read 和聚集寫 gather write include ssize t readv int filedes,const struct iovec iov,int iovcnt ...