Oracle Solaris セキュリティーサービス開発ガイド

inetd の検査

サービスの資格の獲得が完了すると、gss-server は、inetd をユーザーが指定しているかどうかを検査します。main 関数が、次のようにして inetd の検査を行なっています。

if (do_inetd) {
	 close(1);
	 close(2);

inetd を使用するようにユーザーが指定している場合、プログラムは標準出力と標準エラーを閉じます。次に、gss-server は、inetd が接続の受け渡しに使用する標準入力を指定して sign_server() を呼び出します。それ以外の場合、gss-server は、ソケットを作成し、TCP 関数 accept() を使ってそのソケットの接続を受け入れたあと、accept() の戻り値のファイル記述子を指定して sign_server() を呼び出します。

inetd を使用しない場合、プログラムは終了されるまで接続とコンテキストを作成します。しかし、ユーザーが -once オプションを指定している場合、ループは最初の接続の後で終了します。