inetd や listen のようなポートモニターは、特定の RPC サービスに対するネットワークアドレスを監視することができます。特定のサービスに対する要求が到着すると、ポートモニターは、サーバープロセスを生成します。サービスを提供したら、サーバーは終了できます。この方法によりシステム資源を節約することができます。rpcgen で生成するサーバー関数 main() は inetd で呼び出すことができます。詳細は、 inetd の使用 を参照してください。
サーバープロセスがサービス要求に答えた後、続けて要求が来る場合に備えて一定時間待つことには意味があります。一定時間内に次の呼び出しが起こらなければ、サーバーは終了し、inetd のようなポートモニターがサーバーのための監視を続けます。サーバーが終了しないうちに次の要求が来れば、ポートモニターは新たなプロセスを生成することなく待ち状態のサーバーにその要求を送ります。
listen() などのポートモニターの場合は、サーバーのための監視を行い、サービス要求が来れば必ず新たなプロセスを生成します。このようなモニタからサーバープロセスを起動する場合は、サーバープロセスはサービス提供後すぐに終了するようにしなければなりません。
rpcgen がデフォルトで生成したサービスは、サービス提供後 120 秒間待ってから終了します。待ち時間を変更するには、-K フラグを使用します。たとえば、次のコマンドでは、サーバーは 20 秒待ってから終了します。サービス提供後すぐに終了させるには、次のように待ち時間に対して 0 を指定します。
rpcgen -K 20 proto.x
rpcgen -K 0 proto.x
ずっと待ち状態を続けて終了しないようにするには、-K -1 と指定します。
ポートモニターについての詳細は、付録 F 「SAF を使用したポートモニタープログラムの作成」を参照してください。