epoll_ctl() - Unix,Linux系統呼叫 - 技術教學
Tutorials Point


  Unix入門
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於TP  

epoll_ctl() - Unix,Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

epoll_ctl - epoll描述符的控制介面

概要

#include <sys/epoll.h> 

int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)

描述

透過請求對目標檔案描述符fd執行操作op來控制epoll描述符epfdevent描述與檔案描述符fd連結的物件。struct epoll_event定義為

    typedef union epoll_data {
        void *ptr;
        int fd;
        __uint32_t u32;
        __uint64_t u64;
    } epoll_data_t;

struct epoll_event { __uint32_t events; /* Epoll events */ epoll_data_t data; /* User data variable */ };

events成員是由以下可用事件型別組成的位集

錯誤程式碼描述
EPOLLIN關聯檔案可用於read(2)操作。
EPOLLOUT 關聯檔案可用於write(2)操作。
EPOLLRDHUP 流套接字對等端關閉連線,或關閉連線的寫入部分。(此標誌對於編寫檢測對等端在使用邊緣觸發監控時的關閉的簡單程式碼特別有用。)
EPOLLPRI 有緊急資料可用於read(2)操作。
EPOLLERR 關聯檔案描述符上發生錯誤條件。epoll_wait(2) 將始終等待此事件;無需在events中設定它。
EPOLLHUP 關聯檔案描述符上發生掛起。epoll_wait(2) 將始終等待此事件;無需在events中設定它。
EPOLLET 為關聯檔案描述符設定邊緣觸發行為。epoll的預設行為是水平觸發。有關邊緣觸發和水平觸發事件分發體系結構的更多詳細資訊,請參見epoll(7)。
EPOLLONESHOT(自核心 2.6.2 起)為關聯檔案描述符設定一次性行為。這意味著在使用epoll_wait(2)提取事件後,關聯檔案描述符會在內部停用,並且epoll介面將不會報告其他事件。使用者必須使用EPOLL_CTL_MOD呼叫epoll_ctl(2)來使用新的事件掩碼重新啟用檔案描述符。
epoll介面支援所有支援poll(2)的檔案描述符。op引數的有效值為
 
程式碼描述
EPOLL_CTL_ADD 將目標檔案描述符fd新增到epoll描述符epfd,並將事件event與連結到fd的內部檔案關聯。
EPOLL_CTL_MOD 更改與目標檔案描述符fd關聯的事件event
EPOLL_CTL_DEL epoll檔案描述符epfd中刪除目標檔案描述符fdevent被忽略,可以為NULL(但請參見下面的BUG)。

返回值

成功時,epoll_ctl(2)返回零。發生錯誤時,epoll_ctl(2)返回-1,並適當地設定errno

錯誤

錯誤程式碼描述
EBADF epfdfd不是有效的檔案描述符。
EEXIST op為EPOLL_CTL_ADD,並且提供的檔案描述符fd已在epfd中。
EINVAL epfd不是epoll檔案描述符,或者fdepfd相同,或者此介面不支援請求的操作op
ENOENT op為EPOLL_CTL_MOD或EPOLL_CTL_DEL,並且fd不在epfd中。
ENOMEM 記憶體不足以處理請求的op控制操作。
EPERM 目標檔案fd不支援epoll

符合標準

epoll_ctl(2)是Linux核心2.5.44中引入的新API。該介面應由Linux核心2.5.66完成。

錯誤

在2.6.9之前的核心版本中,EPOLL_CTL_DEL操作需要event中的非空指標,即使此引數被忽略也是如此。自核心2.6.9起,使用EPOLL_CTL_DEL時,event可以指定為NULL。

參見



previous next Printer Friendly

廣告


  

廣告



廣告