现在我在使用 linux mint 中的 getservbyname()
函数时遇到了一些麻烦,每次我尝试获取端口时它都会返回 NULL
而我却不知道不知道会是什么
extern struct servent *get_port(char *name, char *prot) {
struct servent *tmp;
tmp = getservbyname(name, prot);
if(tmp == NULL) {
return NULL;
}
return tmp;
}
函数是这样调用的
struct servent *port;
if((port = (struct servent*)get_port("server", "tcp")) == NULL){
perror("Error... \n");
return -1;
}
printf("Got the port... \n");
我使用 perror 函数来获取有关该问题的更多信息,但每次我运行代码时,我都知道该函数工作正常...
最佳答案
getservbyname()
不设置 errno
, 所以 perror()
不起作用。
如果返回NULL
那么最可能的原因是你指定的服务在services文件中不存在,或者services文件打不开。
您示例中的名称 "server"
不是通常包含在服务数据库中的服务 - 尝试查找类似 "ftp"
的服务.
关于c - 为什么我的 getservbyname 函数总是返回 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14516062/