GETSERVENT - Linux手册页

时间:2019-08-20 18:00:32  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

getservent,getservbyname,getservbyport,setservent,endservent-获取服务条目

语法

#include <netdb.h>

struct servent *getservent(void);

struct servent *getservbyname(const char *name, const char *proto);

struct servent *getservbyport(int port, const char *proto);

void setservent(int stayopen);

void endservent(void);

说明

getservent()函数从服务数据库中读取下一个条目(请参阅services(5)),并返回一个包含该条目中细分字段的servant结构。如有必要,将打开与数据库的连接。

getservbyname()函数从数据库返回条目的servant结构,该条目使用协议原型与服务名称匹配。如果proto为NULL,则将匹配任何协议。如有必要,将打开与数据库的连接。

getservbyport()函数使用协议原型为数据库中与端口端口(以网络字节顺序提供)匹配的条目返回一个servant结构。如果proto为NULL,则将匹配任何协议。如有必要,将打开与数据库的连接。

setservent()函数将打开与数据库的连接,并将下一个条目设置为第一个条目。如果stayopen为非零值,则在调用getserv *()函数之一之间不会断开与数据库的连接。

endersvent()函数关闭与数据库的连接。

服务方结构定义如下:

struct servent {
    char  *s_name;       /* official service name */
    char **s_aliases;    /* alias list */
    int    s_port;       /* port number */
    char  *s_proto;      /* protocol to use */
}

服务结构的成员是:

s_name
服务的正式名称。
s_aliases
以NULL结尾的服务替代名称列表。
s_port
服务的端口号,以网络字节顺序指定。
s_proto
与此服务一起使用的协议的名称。

返回值

getservent(),getservbyname()和getservbyport()函数返回指向静态分配的servant结构的指针,如果发生错误或到达文件末尾,则返回NULL。

文件

/etc/services
服务数据库文件

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
getservent()Thread safetyMT-Unsafe race:servent
race:serventbuf locale
getservbyname()Thread safetyMT-Unsafe race:servbyname
locale
getservbyport()Thread safetyMT-Unsafe race:servbyport
locale
setservent(),
endservent()
Thread safetyMT-Unsafe race:servent
locale

在上表中,race:servent中的servnt表示如果在程序的不同线程中并行使用setervent(),getservent()或endservent()函数中的任何一个,则可能发生数据争用。

遵循规范

POSIX.1-2001,POSIX.1-2008、4.3BSD。

另外参见

getnetent(3),getprotoent(3),getservent_r(3),服务(5)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/