Как проверить с помощью C, находится ли порт на моей локальной машине (если требуется, передав IP или интерфейс) также в состоянии прослушивания? Я не хочу подключаться к этому порту для проверки, потому что я не хочу раздражать службу за этим портом.
Я хочу использовать это для добавления отсутствующего элемента net.tcp.listen в Zabbix.
РЕДАКТИРОВАТЬ - ЭТО НАСТОЯЩИЙ ОТВЕТ:
Правильный способ - читать таблицы сокетов:
/ Proc / нетто / ТСР
/ Proc / нетто / tcp6
Они содержат такие строки, как:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:1F40 00000000:0000 0A 00000000:00000000 00:00000000 00000000 101 0 4083927 1 f5d15240 750 0 0 2 -1
1: 00000000:2742 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1002 0 6100 1 decd76c0 750 0 0 2 -1
и может быть легко проанализирован для прослушивания сокетов (dst: 00000000: 0000). Strats на netstat показывает, что netstat работает так же.