Получить используемые порты и состояния - PullRequest
3 голосов
/ 23 декабря 2011

Как я могу получить используемые порты и их состояния в Linux? В принципе, все, что netstat может сделать, но в C?

Ответы [ 2 ]

3 голосов
/ 23 декабря 2011

Запуск strace при запуске netstat покажет вам системные вызовы и их аргументы.

$ strace netstat
...
open("/proc/net/tcp6", O_RDONLY)        = 3
open("/proc/net/udp", O_RDONLY)         = 3
...

Это часто хороший способ узнать, что делает программа или какие вызовы она делает, и иногда бывает проще, чем смотреть на источник, если все, что вам нужно, это выяснить, какой вызов посмотретьна странице человека.

1 голос
/ 23 декабря 2011

Ну, для «всего, что может сделать netstat», вы можете начать с самого netstat. Исходный код здесь:

http://net -tools.git.sourceforge.net / мерзавец / gitweb.cgi р = нетто-инструменты / нетто-инструменты;? А = BLOB; е = netstat.c; ч = f046f09162689f258f8920c1c2af27e01cdc77f2; ро = ГОЛОВА

Следует отметить, что большую часть того, что делает netstat, он получает из файловой системы /proc; похоже, что подпрограммы *_do_one содержат большинство "интересных" смелостей.

...