3

C プログラムから、特定のアプリケーション リストのアプリケーションとその出力ポートのリストを取得したいと考えています。

私は次のようなものを使用することを考えています

ss -natp |  awk '/firefox/ { split($4,array,":"); printf "%d ", array[2]} END{print ""}''

のようなリストが表示され41477 59505ます。

ss を一度呼び出してから、すべてのアプリケーションに対してこれを取得する効率的な方法は何ですか? (複数の出力パイプ?多くの一致に対して awk を使用する最適な方法はありますか?ファイルに ss を指定してから、何度も awk を実行しますか?)

ありがとう!

4

1 に答える 1

3

の連想配列機能を使用しますawk

ss -natp | awk '{port = split($4, array, ":"); program[$1] = program[$1] " " port; }
                END { for (p in program) print p ": " program[p]; }'

テストされていませんが、概念はほぼ正しいです。

于 2012-01-13T18:11:41.817 に答える