デーモン
読み:デーモン
外語:daemon
バックグラウンドで動作するプログラムのこと。こういった
プロセス
を「デーモンプロセス」という。
目次
概要
特徴
主なデーモン
デーモン≠悪魔
作成方法
概要
その機能から、時に
サーバー
とも呼ばれることがあるが、内部の刺激で動作するものは特にデーモンといい、これをサーバーとはあまり言わない。
デーモンという表現であれば、その両方を指すことができる。
オペレーティングシステム
(OS)や場合によっては「ドライバー」と呼ばれることもあるが、ドライバーが必ずしもデーモンであるとは限らない。
カーネル
に組み込まれることもあるからである。
特徴
主なデーモン
例えば
Webサーバー
として機能している
httpd
(HTTPデーモン)や、
FTPサーバー
として機能している
ftpd
(FTPデーモン)のようなものがある。
日常、よく世話になっているデーモンに、次のようなものがある。
inetd
httpd
ftpd
telnetd
sshd
pop3d (popd)
smtpd
IRCd
デーモンは、名前(例えばプロトコル名)の最後に「
d
」を付けて表わすのが慣わしとなっている。
デーモン≠悪魔
デーモンは
英語
でdaemonと書く。daemonは日本では「デーモン」と読まれる単語だが、「何かやろうとした時出てくる便利な奴」という意味を込めて、あえて「
ドラえもん
」と茶化して読む人もいる。
そんなデーモンには二種類があるらしい。
daemon : (
ギリシャ神話
の)ダイモン、守護神
demon : 悪魔、鬼
ここでいうデーモンは前者daemonであり、「(人知れず仕事をしてくれる、便利な)小人さん」という意味で用いられる。
ちなみにBSDのマスコットキャラは、正式名称は無いらしいが一般に「BSDデーモン」(BSD Daemon)と呼ばれている。名前の由来は当然、このデーモンプロセスのデーモンである。トライデント(三叉の鉾)を持つなど守護神を意識してはいるが、その容姿から、やはり悪魔と俗称される。某ライバルOSのペンギンと違って可愛らしさが無い、などと言われているとかいないとか。
作成方法
デーモンプロセスといえども、一般にはアプリケーションプログラムと同様に起動される。これを、バックグラウンドで動作させるようにする処理が必要である。
UNIXではこれが簡単で、プログラムはfork()し、その後親プロセスを終了させるだけで、基本的には完了する。あとは、必要な設定等を随時行なうことになる。inetdから呼ばれる場合は不要だが、さもなくば、一般的には次のような手順を踏むことになる。
fork()
して、親プロセスを終了させる。こうすると、シェルに制御が戻る。
setsid()により、プロセスグループとセッショングループのリーダーになる。
再びfork()し、親プロセス(セッショングループリーダー)を終了させる。
chdir("/")し、どのディレクトリも使用中でないことを明確にする。これを忘れると、
ファイルシステム
のアンマウントが出来なくなることがある。
umask(0)して、以降作成されるあらゆるファイルを支配下に置く。
ファイルディスクリプター
の0、1、2をclose()する。親プロセスから引き継いだ、リダイレクト先不明の
標準入出力
は使用しない。
stdin、stdout、stderrは、自分で新しいディスクリプターとしてopen()する。
再検索