Привыкнуть портов и государств


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

2 3

2 ответа:

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

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

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

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

Http://net-tools.git.sourceforge.net/git/gitweb.cgi?p=net-tools/net-tools;a=blob;f=netstat.c;h=f046f09162689f258f8920c1c2af27e01cdc77f2;hb=HEAD

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