linux新的API signalfd、timerfd、eventfd使用说明
三種新的fd加入linux內核的的版本:
signalfd:2.6.22
timerfd:2.6.25
eventfd:2.6.22
三種fd的意義:
signalfd:傳統的處理信號的方式是注冊信號處理函數;由于信號是異步發生的,要解決數據的并發訪問,可重入問題。signalfd可以將信號抽象為一個文件描述符,當有信號發生時可以對其read,這樣可以將信號的監聽放到select、poll、epoll等監聽隊列中。
timerfd:可以實現定時器的功能,將定時器抽象為文件描述符,當定時器到期時可以對其read,這樣也可以放到監聽隊列的主循環中。
eventfd:實現了線程之間事件通知的方式,eventfd的緩沖區大小是sizeof(uint64_t);向其write可以遞增這個計數器,read操作可以讀取,并進行清零;eventfd也可以放到監聽隊列中,當計數器不是0時,有可讀事件發生,可以進行讀取。
三種新的fd都可以進行監聽,當有事件觸發時,有可讀事件發生。
signalfd涉及API:
[cpp] view plaincopy參數fd:如果是-1則表示新建一個,如果是一個已經存在的則表示修改signalfd所關聯的信號;
參數mask:信號集合;
參數flag:內核版本2.6.27以后支持SFD_NONBLOCK、SFD_CLOEXEC;
成功返回文件描述符,返回的fd支持以下操作:read、select(poll、epoll)、close
timerfd涉及的API
[cpp] view plaincopyeventfd涉及API:
[cpp] view plaincopy創建一個eventfd,這是一個計數器相關的fd,計數器不為零是有可讀事件發生,read以后計數器清零,write遞增計數器;返回的fd可以進行如下操作:read、write、select(poll、epoll)、close
?
這是三種新的fd的基本概念,接下來的幾篇會通過例子程序來說明各種fd的用法。
總結
以上是生活随笔為你收集整理的linux新的API signalfd、timerfd、eventfd使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《三体》IP授权!剧本杀《三体·永恒纪元
- 下一篇: Linux Kbuild文档 2