2011-12-20 1 views
4

私はselect()からkqueue()にいくつかのコードを移植していましたが、kevent()はselect()の "exception-set"機能のためのアナログを持っていないようです。 、と言う選択することであるselect()の "errorfds"セットに相当するkqueue()/ kevent()はありますか?

()の関数署名である:

int select(int nfds, fd_set *restrict readfds, fd_set *restrict writefds, fd_set *restrict errorfds, struct timeval *restrict timeout); 

...とのkevent()と、EVFILT_READは(readfds)に対応し、EVFILT_WRITEは(writefds)に対応し、 EVFILT_ERRORのようなものは(errorfds)には対応しません。

kevent()の下でソケットエラー条件がサポートされていないのですか、それともそこにはありますか?

+0

errorfdsには何が必要ですか?読み取りエラーは既に読み取りイベントによって報告され、書き込みエラーは書き込みイベントによって発生します(読み取りエラーまたは書き込み失敗による)。 –

答えて

0

このようにフィルタリングすることはできません。受信イベントは、フラグ(EV_EOF)とfflagsに基づいて手動で分類する必要があります。

関連する問題