fopencookie函式詳解

2022-09-04 01:42:09 字數 1026 閱讀 1483

今天看dpdk時,看到了fopencookie函式,以前基本沒有用過該函式,乘此機會好好看看如何使用。

1. 函式標頭檔案與函式原型 

函式標頭檔案: #include

函式原型:

file *fopencookie(void *cookie, const char *mode, cookie_io_functions_t io_funcs);

2. 函式及引數說明

該函式用來diy乙個流,什麼是流,比如標準輸入,標準輸出。

引數:(1 cookie

cookie是一種自定義的資料結構,用於和後面的io_funcs配合使用,可以為null。

(2 mode

開啟方式,和fopen相同,包括:r,w,a,r+,w+,a+。

(3 io_funcs

四個函式指標組成的函式集,需要使用者實現這四個函式指標。我們仔細看看:

io_funcs:

typedef struct cookie_io_functions_t;

第乙個read函式實現從流的讀操作,原型如下:

ssize_t read(void *cookie, char *buf, size_t size);

該函式必須返回讀到資料的位元組數,注意是讀到,意味著流資料要拷貝到

buf中。返回0表示eof,-1表示出錯。該函式必須要更新流的offset。

第二個函式write實現向流的寫操作,原型如下:

ssize_t write(void *cookie, const char *buf, size_t size);

基本和上面read類似。

第三個函式seek實現挪動流的offset,原型如下:

int seek(void *cookie, off64_t *offset, int whence);

offset更具whence的取值指明了流指標要移動到的位置。基本和系統呼叫的seek函式類似。

返回0表示成功,返回-1表示失敗。

第四個函式close用於關閉流,該函式用來釋放流所用到的緩衝區資源。

fopencookie函式的使用說明

今天看dpdk時,看到了fopencookie函式,以前基本沒有用過該函式,乘此機會好好看看如何使用。1.函式標頭檔案與函式原型 函式標頭檔案 include 函式原型 file fopencookie void cookie,const char mode,cookie io functions ...

mod函式詳解

我們知道,mod函式是乙個求餘函式,其格式為 mod nexp1,nexp2 即是兩個數值表示式作除法運算後的餘數。那麼 兩個同號整數求餘與你所知的兩個正數求餘完全一樣 即兩個負整數與兩個正整數的演算法一樣 一 兩個異號整數求餘 1.函式值符號規律 餘數的符號 mod 負,正 正 mod 正,負 負...

CDC PatBlt 函式詳解。

函式功能 該函式使用當前選入指定裝置環境中的刷子繪製給定的矩形區域。通過使用給出的光柵操作來對該刷子的顏色和表面顏色進行組合。函式原型 bool patblt hdc hdc,int nxleft,int nyleft,int nwidth,int nheight,dword dwrop 引數 hd...