kqueue メカニズムにはEV_RECEIPT
、リンクされたマニュアル ページによると、イベント フラグ があります。
...保留中のイベントを排出せずにkqueueを一括変更するのに役立ちます。入力として渡されると、
EV_ERROR
常に返されるように強制されます。フィルタが正常に追加されると、データ フィールドはゼロになります。
nevents
ただし、パラメーターに0 を渡しkevent
てキューからイベントを描画しないだけで、保留中のイベントを排出せずに kqueue を一括変更するのは簡単だと理解しています。それを念頭に置いて、なぜEV_RECEIPT
必要なのですか?
OS X に関する Apple ドキュメントの一部のサンプル コードでは、実際に EV_RECEIPT を使用しています。
kq = kqueue();
EV_SET(&changes, gTargetPID, EVFILT_PROC, EV_ADD | EV_RECEIPT, NOTE_EXIT, 0, NULL);
(void) kevent(kq, &changes, 1, &changes, 1, NULL);
しかし、changes
配列は呼び出し後に検査されないため、この場合にkevent
なぜ使用されたのかはまったくわかりません。EV_RECEIPT
EV_RECEIPT は実際に必要ですか? 本当に役に立つのはどんな場面?