HP-UX Reference (11i v1 00/12) - 3 Library Functions A-M (vol 6)

__________________________________________________________________________________________________________________________________________________________________________________________________
__________________________________________________________________________________________________________________________________________________________________________________________________
STANDARD Printed by: Nora Chuang [nchuang] STANDARD
/build/1111/BRICK/man3/!!!intro.3c
________________________________________________________________
___ ___
g
getservent(3N) getservent(3N)
For enumeration in multithreaded applications, the position within the enumeration is a process-wide pro-
perty shared by all threads. setservent() may be used in a multithreaded application, but resets the
enumeration position for all threads. If multiple threads interleave calls to getservent() , the threads
will enumerate disjoint subsets of the service database.
Name Service Switch-Based Operation
The library routines getservbyname(), getservbyport(), getservent() , and their reentrant
counterparts, internally call the name service switch to access the "services" database lookup policy
configured in the /etc/nsswitch.conf file (see nsswitch.conf(4)). The lookup policy defines the order
and the criteria of the supported name services used to resolve service names and ports.
OBSOLESCENT INTERFACES
int getservent_r(struct servent *result,
struct servent_data *buffer);
int getservbyname_r(const char *name,
const char *proto,
struct servent *result,
struct servent_data *buffer);
int getservbyport_r(int port,
const char *proto,
struct servent *result,
struct servent_data *buffer);
int setservent_r(int stayopen, struct servent_data *buffer);
int endservent_r(struct servent_data *buffer);
The above reentrant interfaces have been moved from libc to libd4r. They are included to support
existing applications and may be removed in a future release. New multithreaded applications should use
the regular APIs without the _r suffix.
The reentrant interfaces performs the same operations as their regular counterpart (those without the _r
suffix.) However, getservent_r()
, getservbyname_r(), and getservbyport_r()
expect to
be passed the address of a
struct servent and will store the address of the result at this supplied
parameter. An additional parameter, an address to a struct servent_data, which is defined in the file
<netdb.h> cannot be a NULL pointer.
The reentrant routines return 1 if the operation is unsuccessful, or, in the case of
getservent_r(),if
the end of the services list has been reached.
0 is returned otherwise.
RETURN VALUE
getservent() , getservbyname(), and
getservbyport() return a null pointer (0) on EOF or
when they are unable to open
/etc/services.
EXAMPLES
The following code excerpt counts the number of service entries:
int count = 0;
(void) setservent(0);
while (getservent() != NULL)
count++;
(void) endservent();
WARNINGS
Programs that use the interfaces described in this manpage cannot be linked statically because the imple-
mentations of these functions employ dynamic loading and linking of shared objects at run time.
AUTHOR
getservent() was developed by Sun Microsystems Inc.
FILES
/etc/services
Section 3350 2 HP-UX Release 11i: December 2000
___
___