United States-English |
|
|
HP-UX Reference > Ggetservent(3N)HP-UX 11i Version 3: February 2007 |
|
NAMEgetservent(), getservbyport(), getservbyname(), setservent(), endservent() — get, set, or end service entry SYNOPSIS#include <netdb.h> struct servent *getservent(void); struct servent *getservbyname(const char *name, const char *proto); struct servent *getservbyport(int port, const char *proto); int setservent(int stayopen); int endservent(void); _XOPEN_SOURCE_EXTENDED only void setservent(int stayopen); void endservent(void); DESCRIPTIONThe getservent(), getservbyname(), and getservbyport() functions each return a pointer to a structure of type servent containing the broken-out fields of a line in the network services data base, /etc/services. The members of this structure are:
Functions behave as follows:
If the system is running the Network Information Service (NIS), getservbyname() gets the service information from the NIS server (see ypserv(1M) and ypfiles(4)). In a multithreaded application, getservent(), getservbyaddr(), and getservbyname() use thread-specific storage that is re-used in each call. The return value struct servent should be unique for each thread and should be saved, if desired, before the thread makes the next getserv*() call. For enumeration in multithreaded applications, the position within the enumeration is a process-wide property 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 OperationThe 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 INTERFACESint 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 VALUEgetservent(), getservbyname(), and getservbyport() return a null pointer (0) on EOF or when they are unable to open /etc/services. EXAMPLESThe following code excerpt counts the number of service entries: int count = 0; (void) setservent(0); while (getservent() != NULL) count++; (void) endservent(); |
Printable version | ||
|