libevent實現對管道的讀寫操作

2021-09-25 03:53:04 字數 1684 閱讀 4969

讀管道:

#include #include #include #include #include #include #include #include //對操作的處理函式

void read_cb(evutil_socket_t fd, short what, void *arg)

; int len = read(fd, buf, sizeof(buf));

printf("read event: %s \n ", what & ev_read ? "yes":"no");

printf("data len = %d, buf = %s\n", len, buf);

sleep(1);

}int main(int argc, const char* ar**)

//建立乙個event_base

struct event_base* base = null;

base = event_base_new();

//建立事件

struct event* ev = null;

ev = event_new(base, fd, ev_read| ev_persist, read_cb, null);

//新增事件

event_add(ev, null);

//事件迴圈

event_base_dispatch(base);

//釋放資源

event_free(ev);

event_base_free(base);

close(fd);

}

寫管道:

//讀管道

#include #include #include #include #include #include #include #include //對操作的處理函式

void write_cb(evutil_socket_t fd, short what, void *arg)

; static int num = 0;

sprintf(buf, "hello world-%d\n", num++);

write(fd, buf, strlen(buf) +1);

sleep(1);

}int main(int argc, const char* ar**)

//建立乙個event_base

struct event_base* base = null;

base = event_base_new();

//建立事件

struct event* ev = null;

ev = event_new(base, fd, ev_write| ev_persist, write_cb, null);

//新增事件

event_add(ev, null);

//事件迴圈

event_base_dispatch(base);

//釋放資源

VC 下對匿名管道的程式設計實現

總的來說,匿名管道程式是比較簡單的。在下面將要給出的程式示例中,將由父程序 管道伺服器 建立乙個子程序 管道客戶機 子程序回見個其全部的標準輸出傳送到匿名管道中,父程序再從管道讀取資料,一直到子程序關閉管道的寫控制代碼。其中,匿名管道伺服器程式的實現清單如下 startupinfo si proce...

對幻讀的思考

參考自極客時間 mysql實戰45講 幻讀指的是乙個事務在前後兩次查詢同乙個範圍的時候,後一次查詢看到了前一次查詢沒有看到的行。幻讀僅發生在 當前讀 的情況下。請思考一下,為什麼只有在當前讀下會發生?如果是快照讀,在該事務之後的其他事務的變更,當前事務一定看不到,不可能發生幻讀。問題 表結構 cre...

13 4 15 管道的實現

13.4.15 管道的實現 管道是unix提供的一種在兩個程序間通訊的機制。管道允許乙個程序按照先進先出 first in first out,fifo 的方式向另乙個程序傳送資料。它還可以用於不同程序間的同步。有兩種型別的管道 命名管道和無名管道。就目前的討論而言,可以忽略兩者之間的差別。從本質上...