tail head cat sleep
QR code linking to this page

Man page  — GETSERVENT

명칭

getservent, getservbyport, getservbyname, setservent, endservent – 서비스 엔트리의 취득

내용

프로그램 라이브러리

Standard C Library (libc, -lc)

서식

#include <netdb.h>

struct servent *
getservent();

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(), getservbyname()getservbyport() 함수는 각각, 다음에 나타내는 구조를 가지는 오브젝트에의 포인터를 돌려줍니다. 구조체에는 네트워크 서비스 데이타베이스 /etc/services 에 있는, 행의 내역 필드가 포함됩니다.
struct  servent {
        char    *s_name;        /* 서비스의 오피셜명 */
        char    **s_aliases;    /* 앨리어스(alias) 리스트 */
        int     s_port;         /* 서비스가 상주하는 포트 */
        char    *s_proto;       /* 사용하는 프로토콜 */
};

이 구조체의 멤버는 다음과 같습니다.
s_name
  서비스의 오피셜명.
s_aliases
  서비스의 별명 (앨리어스(alias))의 0 으로 끝나는 리스트.
s_port
  서비스가 존재하는 포트 번호. 포트 번호는 네트워크 바이트 오더로 돌려주어집니다.
s_proto
  서비스와의 컨택트중에 사용하는 프로토콜명.

getservent() 함수는, 파일의 다음의 행을 읽어들입니다. 그 때, 필요하면 파일을 오픈합니다.

setservent() 함수는 파일을 오픈해 되감기 합니다. stayopen 플래그가 0 이 아니면, getservbyname() 또는 getservbyport() 의 각 호출의 후에도, 넷 데이타베이스는 클로우즈 되지 않습니다.

endservent() 함수는 파일을 클로우즈 합니다.

getservbyname()getservbyport() 함수는, 적합하는 프로토콜명 또는 포트 번호 (이것은 네트워크 바이트 오더로 지정되지 않으면 안됩니다) 하지만 발견되는지, 아주 없으면 EOF 에 이를 때까지, 파일을 최초부터 차례차례 검색합니다. 프로토콜명이 주어지고 있어도 ( NULL (이)가 아니어도), 검색은 적합하는 프로토콜이 발견될 때까지 계속됩니다.

관련 파일

/etc/services
 

진단

EOF 또는 에러의 경우, Null 포인터 (0) 하지만 돌아갑니다.

관련 항목

getprotoent(3), services(5)

역사

getservent(), getservbyport(), getservbyname(), setservent()endservent() 함수는, BSD 4.2 그리고 등장했습니다.

버그

이러한 함수는 정적 데이터 기억역을 사용합니다. 다음에 이 데이터를 사용할 필요가 있으면, 이후의 이러한 함수 호출로 데이터가 덧쓰기되기 전에, 카피해 보존할 필요가 있습니다. 포트 번호가 모두 32 비트에 적합한다고 기대하는 것은, 아마 너무 소박합니다.

GETSERVENT (3) July 9, 1995

tail head cat sleep
QR code linking to this page


Ben Bullock이 유닉스 매뉴얼 페이지에서 서비스에 대한 의견을 주시기 바랍니다. Privacy policy.

I define UNIX as “30 definitions of regular expressions living under one roof.”
— Donald Knuth