next up previous contents
Next: VMEバスやCAMACをアクセスする Up: ネットワークプログラムを書く Previous: リモートプロシジャコール

デーモンプロセス

ネットワーク経由のメッセージを処理するプロセスは通常、デーモンと呼ば れます。例えば実験用のデータベースを設計した場合、他の計算機からも参照 したり更新したりしなければなりませんからそのためのデーモンプロセスを走 らせる必要があります。これまでの議論の中でデーモンプロセスを設計するた めのいくつかの注意点が出てきましたのでまとめておきましょう。

まず、デーモンは端末を持たない状態で走るので、標準出力、標準エラー出 力をログファイルにリダイレクトしなければなりません。これはログファイル を開いた後標準出力をcloseし、dupシステムコールでリダイレクトします。

デーモンが複数の入出力を扱う場合、UNIXでは並列動作がシグナルを除いて 出来ないので、入出力はポーリングに頼ることになります。そのためのシステ ムコールselectを導入します。

デーモンが実際の作業を子プロセスをforkすることによってやらせる場合子 プロセスの終了をwaitによって確認しないとゾンビが残ってしまいました。こ のnため子プロセスは親プロセスにシグナルを送って自分の終了を知らせます。 シグナルを受け付けられるようにしておくことは強靭なプロセスにするために も必要なことです。signalシステムコールでハンドラールーチンを割り当てま したが、注意すべきことはすべての完了待ちシステムコールはシグナル受信に よってユーザプロセスに制御を戻してしまうことです。



next up previous contents
Next: VMEバスやCAMACをアクセスする Up: ネットワークプログラムを書く Previous: リモートプロシジャコール



Kinya Hibino
Sun Jan 14 21:36:40 JST 1996