在特定端口上的C中获取正在运行的服务守护程序?

时间:2010-12-08 17:18:57

标签: c linux service daemon

我要获取在从输入接收的特定端口中工作的守护进程(可能是它的版本)。像“22”这样的东西 - > “SSH”。

我该怎么办?

2 个答案:

答案 0 :(得分:0)

尝试这样的事情:

#include <netdb.h>

char servname[50];
struct addrinfo *ai;
getaddrinfo(0, "22", 0, &ai);
getnameinfo(ai->ai_addr, ai->ai_addrlen, 0, 0, servname, sizeof servname, 0);
freeaddrinfo(ai);

注意:此代码不完整。您应检查错误,如果您的端口号最初是整数而不是字符串,则可以使用snprintf将十进制字符串传递给getaddrinfo

与旧的getservbyport()接口不同,我给出的解决方案是线程安全的,可以从库代码中调用。

答案 1 :(得分:0)

目前尚不清楚您是否只想查看本地服务数据库中的端口(如果是,请使用R's answer),或者是否要主动检查端口以尝试确定侦听服务。< / p>

如果是后者,那么最好的方法可能只是针对本地感兴趣的端口运行nmap