3

gdbまたはその他の検査ツールを使用して、特定のepollインスタンスに登録されている記述子(および予想されるイベント)を確認する方法があるかどうか疑問に思っていますか?

ポーリングまたは選択を使用すると、この情報はすべて実行中のプロセスから見えるメモリで自由に利用でき、デバッガーで調べることができるため、簡単に見つけることができます。ただし、epollは、このすべてのデータをカーネルスペースに保持するため、多少異なります。私は、epollインスタンスによってどのイベントが予想されるかを特定の瞬間に知るために、トレースを使用してコードをインストルメント化できることを認識していますが、他の方法があると非常に便利です。

ありがとう

4

1 に答える 1

2

「ERRORS」の下の「epoll_ctl」のLinuxプログラマーのマニュアルページから

 EEXIST op was EPOLL_CTL_ADD, and the supplied file descriptor fd is already registered with this epoll instance.

EPOLL_CTL_ADD を使用して戻り値 -1 を取得し、errno が EEXIST である場合、ファイル記述子は既に登録されています。明らかに、これにはファイル記述子を登録するという副作用があるため、EPOLL_CTL_DEL を使用して呼び出しをフォローアップして、epoll に含めるつもりのないものを削除する必要がある場合があります。

通常、プログラムの通常の流れとしてエラー ケースを使用することは避けることをお勧めします。しかし、デバッグのためにこれを行っているように聞こえるので、実際には問題とは考えていません。とにかく、デバッガーはすべて本当に単なるハックです。

于 2013-03-09T19:33:22.517 に答える