-1

一度に多数のソケット記述子を開いているアプリケーションがあります。これらのアクティビティを監視し、しばらくの間アクティビティが見られなかった記述子を閉じたいと思います。いくつかの解決策がありますが、ファイアウォール ルールを介してこれを実行できるかどうかはわかりません。システムサービスや構成によって達成できる何かのために、自分の努力を無駄にしたくありません。

Linux ベースのシステムで実行する必要があります。

私が念頭に置いている解決策は、timerfd_create を使用し、記述子でタイマーを使用して、すべてのアクティブなソケットを監視することです。より良い方法でこれを達成するための提案は役に立ちます。前もって感謝します。

4

2 に答える 2

0

timerfd.h で timerfd_create および timerfd_settime API を使用しました。閉じられたソケットを検出する他のオプションは、sysconf の keep_alive タイムアウトでした。keep_alive タイムアウトは、ソケットが生きているがアクティビティがない場合にはあまり役に立たなかったため、以前のオプションを使用する必要がありました。

于 2012-11-29T08:08:27.277 に答える
0

select()ソケットを監視するために使用します。manページの最後に例があります。基本的に、ファイル記述子をに追加し、監視対象のファイル記述子の1つが読み書きできるときにそれfd_setを呼び出します。または、タイムアウトを設定した場合は、selectを使用して小さなタイムアウトでタイマーコールバックのfdをチェックできますselect()準備ができていないものを閉じます。

于 2012-11-18T13:58:11.823 に答える