#include <sys/types.h> #include <netinet/in.h> int bindresvport(int sd, struct sockaddr_in **sin);
bindresvport() は、ソケット・ディスクリプタを特権 IP ポートにバインドするのに使う。 特権ポートとは、ポート番号が 0 から 1023 の範囲にあるポートである。
in->sin_port が 0 の場合、600 から 1023 の範囲にある無名ポート (anonymous port) が選択される。 bindresvport() によって実行された bind(2) が成功すると、実際に割り当てられたポート番号が sin->sin_port に入れて返される。
sin には NULL を指定することもでき、その場合には sin->sin_family は暗黙のうちに AF_INET とみなされ、(上記の通り) 無名ポートが割り当てられる。 しかし、この場合には、 bindresvport() は実際に割り当てられたポート番号を返す手段を持たない。
特権ポートにバインドできるのは root だけである。 それ以外のユーザがこのコールを行っても失敗する。 さらに、以下のエラーが発生することがある: