今天看dpdk時,看到了fopencookie函式,以前基本沒有用過該函式,乘此機會好好看看如何使用。
1. 函式標頭檔案與函式原型
函式標頭檔案: #include
函式原型:
file *fopencookie(void *cookie, const char *mode, cookie_io_functions_t io_funcs);
2. 函式及引數說明
該函式用來diy乙個流,什麼是流,比如標準輸入,標準輸出。
引數:(1cookie
cookie是一種自定義的資料結構,用於和後面的io_funcs配合使用,可以為null。
(2mode
開啟方式,和fopen相同,包括:r,w,a,r+,w+,a+。
(3io_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 ...
Sql Server REPLACE函式的使用
replace 用第三個表示式替換第乙個字串表示式中出現的所有第二個給定字串表示式。語法replace string replace1 string replace2 string replace3 引數 string replace1 待搜尋的字串表示式。string replace1 可以是字元...
Sql Server REPLACE函式的使用
replace 更新替換資料庫某個欄位的的部分的值,比如替換資料庫中url欄位的網域名稱,語法 replace cloum string old string old 引數 cloum 待替換欄位的字串表示式。string old 待查詢的字串表示式。string old 替換用的字串表示式。示列 ...