簡體   English   中英

阻止c中的epoll中的特定描述符

[英]blocking an specific descriptor within epoll in c

嗨,我需要在epoll中監視的描述符中有一個特定的文件描述符,以阻止一個描述符是用於不斷接收廣播消息的套接字,但是用戶必須在鍵盤上鍵入一個動作,這是我的另一個描述符。我需要阻止一個,因為我開始打字,然后又收到另一條廣播消息,並弄亂了我在寫的內容。

有沒有一種方法可以暫停事件以使文件描述符檢測到數據准備就緒,或者在數據准備就緒時阻止另一個文件描述符?

您有兩種方法。

  1. 如果您使用的是EPOLLET (邊緣觸發),那么喚醒時的事件處理程序可以首先檢查您是否正在處理來自控制台的鍵入輸入。 如果是這樣,它將無法讀取任何內容,而是設置一個標志。 輸入的輸入處理程序完成后,它將檢查該標志,並手動喚醒套接字輸入處理程序以處理數據。

  2. 如果改為使用級別觸發,則可以通過修改該文件描述符的事件集以抑制要忽略的事件來抑制事件。 可以通過將EPOLL_CTL_MOD與一組新事件一起使用,或者通過使用EPOLL_CTL_DEL完全從epoll注銷文件描述符來實現。 完成類型輸入處理程序之后,您將添加回隱藏的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM