getservent のイテレーションの現在位置をリセットする
setservent は、getservent
のイテレーションの現在位置をリセットします。
これにより、その後の getservent による
services ファイルの読み取りは先頭に戻ることになります。
引数 SYAYOPEN には真偽値 (通常は 1 または 0) を与えなければいけませんが、
真 (1) を与えると services ファイルを開いたままにします。
偽 (0) を与えると services ファイルを閉じます。
setservent を使う場合は、その後に getservent
を使うことが多いでしょうから、SYAYOPEN には 1 を指定することがほとんどでしょう。
次のサンプルコードは、getservent を使って
3 回サービス情報を取り出します。
その後、setservent でイテレーションの現在位置をリセットしたうえで、
再度、getservent を使ってサービス情報を取り出します。
my $name = '';
# サービス名を 3 回取り出す
$name = getservent;
print $name, "\n"; # tcpmux
$name = getservent;
print $name, "\n"; # echo
$name = getservent;
print $name, "\n"; # echo
# getservent のイテレーションの現在位置をリセットする
setservent 1;
# 再度、サービス名を取り出す
$name = getservent;
print $name, "\n"; # tcpmux
このサンプルコードの出力結果を見てお分かりの通り、setservent によって
getservent によるイテレーションがリセットされていることが分かります。
なお、setservent は Windows では機能しませんので注意してください。