setprotoent

getprotoent のイテレーションの現在位置をリセットする

構文

解説

setprotoent は、getprotoent のイテレーションの現在位置をリセットします。 これにより、その後の getprotoent による protocols ファイルの読み取りは先頭に戻ることになります。

引数 SYAYOPEN には真偽値 (通常は 1 または 0) を与えなければいけませんが、 真 (1) を与えると protocols ファイルを開いたままにします。 偽 (0) を与えると protocols ファイルを閉じます。 setprotoent を使う場合は、その後に getprotoent を使うことが多いでしょうから、SYAYOPEN には 1 を指定することがほとんどでしょう。

次のサンプルコードは、getprotoent を使って 3 回プロトコル情報を取り出します。 その後、setprotoent でイテレーションの現在位置をリセットしたうえで、 再度、getprotoent を使ってプロトコル情報を取り出します。

my $name = '';

# プロトコル名を 3 回取り出す
$name = getprotoent;
print $name, "\n";    # ip

$name = getprotoent;
print $name, "\n";    # hopopt

$name = getprotoent;
print $name, "\n";    # icmp

# getprotoent のイテレーションの現在位置をリセットする
setprotoent 1;

# 再度、プロトコル名を取り出す
$name = getprotoent;
print $name, "\n";    # ip

このサンプルコードの出力結果を見てお分かりの通り、sethostent によって gethostent によるイテレーションがリセットされていることが分かります。

なお、sethostent は Windows では機能しませんので注意してください。