GETPROTOENT(3)

명칭
getprotoent, getprotobynumber, getprotobyname, setprotoent, endprotoent - 프로토콜 엔트리의 취득

프로그램 라이브러리
libc

서식
<netdb.h> struct protoent * getprotoent(void) struct protoent * getprotobyname(const char *name) struct protoent * getprotobynumber(int proto) void setprotoent(int stayopen) void endprotoent(void)

해설
getprotoent(), getprotobyname(), 및 getprotobynumber() 함수는 각각, 다음에 나타내는 구조를 가지는 오브젝트에의 포인터를 돌려줍니다. 구조체에는, 네트워크 프로토콜 데이타베이스 /etc/protocols 에 있는 행의 내역 필드가 포함됩니다.

    struct  protoent {
            char    *p_name;        /* 프로토콜의 오피셜명 */
            char    **p_aliases;    /* 앨리어스(alias) 리스트 */
            int     p_proto;        /* 프로토콜 번호 */
    };

이 구조체의 멤버는 다음과 같습니다.

p_name
    프로토콜의 오피셜명.

p_aliases
    프로토콜의 별명 (앨리어스(alias))의 0 으로 끝나는 리스트.

p_proto
    프로토콜 번호.

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

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

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

getprotobyname() 및 getprotobynumber() 함수는, 적합하는 프로토콜명 또는 프로토콜 번호가 발견되는지, 또는 EOF 에 이를 때까지, 파일을 최초부터 차례차례 검색합니다.

반환값
EOF 또는 에러로 Null 포인터 (0) 하지만 돌아갑니다.

관련 파일
/etc/protocols

관련 항목
protocols(5)

역사
getprotoent(), getprotobynumber(), getprotobyname(), setprotoent() 및 endprotoent() 함수는 4.2BSD 그리고 등장했습니다.

버그
이러한 함수는 정적 데이터 공간을 사용합니다. 다음에 이 데이터를 사용할 필요가 있으면, 이후의 이러한 함수의 호출로 데이터가 덧쓰기되기 전에, 카피해 보존할 필요가 있습니다. 덧붙여 프로토콜 데이터로서 받아들이는 것은 현재, 인터넷 프로토콜 뿐입니다.