GETSERVENT - Linux手册页
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)。
Interface | Attribute | Value |
getservent() | Thread safety | MT-Unsafe race:servent race:serventbuf locale |
getservbyname() | Thread safety | MT-Unsafe race:servbyname locale |
getservbyport() | Thread safety | MT-Unsafe race:servbyport locale |
setservent(), endservent() | Thread safety | MT-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/。