cでlibpcapを使用してキャプチャされたパケットを所有するプロセスのPIDを見つける方法は?

cでlibpcapを使用してキャプチャされたパケットを所有するプロセスのPIDを見つける方法は?

キャプチャされたパケットを所有するプロセスのpidを見つける必要があります。

/proc/net/tcpandを解析するのに長い時間をかけずにこれを行う方法はありますか/proc/<PID>/fd/?たぶん別の方法でパケットをスニッフィングする必要がありますか?パケットをCの基本プロセスに関連付ける最速の方法を見つける必要があります。

答え1

私は他の方法がないと思い、/proc/net/*それがまさにそれで読んでいる/proc/*/fd/ようです。複数のプロセスが同じソケットのコピーを持つ可能性があるため、ソケット(またはTCPポート)からプロセスへの独自のマッピングを持つこともできません。そのうちの1つだけが表示されるようです。もちろん、すべてリストされています。また、パケットで始まるので、生のソケットがまったくない可能性があります。システムの外部から来ることも、生/パケットソケットから来ることもできます。lsofnetstat -pnetstat -plsof

関連情報