poll呼叫和select呼叫實現的功能一樣,都是網路io利用的一種機制。
需要的的庫
#include
int poll(struct pollfd fds, nfds_t nfds, int timeout);
struct pollfd ;
fd表示檔案描述符;
events表示請求檢測的事件;
revents表示檢測之後返回的事件;
events的取值 常量
說明 pollin
普通或優先順序帶資料可讀
pollrdnorm普通資料可讀
pollrdband
優先順序帶資料可讀
pollpri
高優先順序資料可讀
pollout
普通資料可寫
pollwrnorm
普通資料可寫
pollwrband
優先順序帶資料可寫
pollerr
發生錯誤
pollhup
發生掛起
pollnval
描述字不是乙個開啟的檔案
nfds:用於標記陣列fds中的struct pollfd結構元素的總數量;
timeout:poll函式呼叫阻塞的時間,單位是ms(毫秒)
#include #include #include #include #include #include int main()
pid_t pid = fork();//建立程序
if (pid == 0)//進入子程序
}else
if (fds[0].revents)
if (fds[1].revents)
}int status;
wait(&status);
}return 0;
}
parent recv is child fork msg 0
parent recv is child fork msg 1
parent recv is child fork msg 2
parent recv is child fork msg 3
輸入le
stdout is le
parent recv is child fork msg 4
輸入yyy
stdout is yyy
poll函式 Linux驅動基石之POLL機制
在前面引入中斷時,我們曾經舉過乙個例子 媽媽怎麼知道臥室裡小孩醒了?時不時進房間看一下 查詢方式 簡單,但是累 進去房間陪小孩一起睡覺,小孩醒了會吵醒她 休眠 喚醒 不累,但是媽媽幹不了活了 媽媽要幹很多活,但是可以陪小孩睡一會,定個鬧鐘 poll方式 要浪費點時間,但是可以繼續幹活。媽媽要麼是被小...
Linux下的i o復用 poll
1 i o復用 乙個程序或者乙個執行緒能夠同時對多個檔案描述符 socket 提供服務,伺服器上的程序或執行緒如何將多個檔案描述符統一監聽,當任意乙個檔案描述符上有事件發生,其都能及時處理。2 poll 函式 函式原型 int poll struct pollfd fds,int nfds,int ...
Linux網路程式設計 poll函式
作用 監視並等待多個檔案描述符的屬性變化。函式原型 int poll struct pollfd fds,nfds t nfds,int timeout 函式引數意義 fds 指向乙個結構體陣列的第0個元素的指標,每個陣列元素都是乙個struct pollfd結構,用於指定測試某個給定的fd的條件。...