Как получить информацию об активном порте (воссоздать `команду netstat`) в Solaris с C ++? - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу воссоздать команду netstat с использованием C ++, чтобы получить всю информацию активного порта (в частности, netstat -f <unix/inet/inet6> -u).Я сделал это на Windows, Linux и MacOS.В Linux, который, как я думал, будет наиболее похож на Solaris, я проанализировал / proc / net / tcp и т. Д., Чтобы получить эту информацию.Этот файл не существует в Solaris, и я не могу найти ничего подобного.Я не могу понять, что именно netstat на Solaris делает, чтобы получить информацию.

man netstat говорит внизу «Утилита netstat получает статистику TCP из системы, открывая / dev / tcp и выполняя запросы»./dev/tcp - это символическая ссылка tp devices/pseudo/tcp@0:tcp, и я не совсем уверен, что это означает или как открыть и запросить ее.

Какие функции / заголовочные файлы / файлы использует netstat Solaris?Что он делает изнутри?

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

1 Ответ

1 голос
/ 26 апреля 2019

Solaris /proc/ procfs содержит информацию о процессе. Ничего другого или не больше. Linux расширил его, включив, действительно, системную информацию всех видов, а не только процессы.

Вы всегда можете сделать неясным ioctl() из /dev/tcp, чтобы получить вашу информацию. Более того, вы должны иметь возможность использовать SMF (Service Management Framework) для запроса свойств некоторого сетевого сервиса для получения вашей информации (введите svcs, чтобы получить список услуг)

...