Как использовать lsof (список открытых файлов) в приложении C / C ++? - PullRequest
6 голосов
/ 17 декабря 2010

Есть ли способ получить все открытые сокеты, используя ? Я знаю команду lsof, и это то, что я ищу, но как использовать ее в приложении ?

Идея состоит в том, чтобы получить FD открытого сокета по номеру port и pid.

Ответы [ 4 ]

4 голосов
/ 17 декабря 2010

Просто откройте файлы в / proc / net, например / proc / net / tcp, / proc / net / udp и т. Д. Нет необходимости проскальзывать через источники lsof. :)

3 голосов
/ 17 декабря 2010

Если вы не хотите копировать / вставлять или переопределять фрагменты кода lsof, и он не создает никаких полезных библиотек, которые вы могли бы использовать, вы все равно можете открыть канал для процесса lsof и просмотреть его вывод..

2 голосов
/ 24 сентября 2014

Команда lsof подготовлена ​​специально для того, чтобы ее можно было использовать из других программ, включая C, см. Раздел: ВЫХОД ДЛЯ ДРУГИХ ПРОГРАММ из man lsof для получения дополнительной информации.Например, вы можете вызвать lsof с помощью -F p, и он выведет pid процессов с префиксом 'p':

$ lsof -F p /some/file
p1234
p4321

, которые вы затем можете использовать popen для выполнения этогоcommmand в дочернем процессе и чтение из его стандартного вывода.

2 голосов
/ 17 декабря 2010

проверить источник lsof?

FTP: //lsof.itap.purdue.edu/pub/tools/unix/lsof/

...