回答:
つまり、デーモンはバックグラウンドプロセスです。
デーモンは、バックグラウンドで実行される通常のプログラムだけでかまいませんが、ほとんどはプロセスを開始し、フォークして親を終了することで作成されます。
プロセスを分岐するとは、プロセスの正確なコピーを作成することを意味します。実際の親がすぐに終了する場合、そのプロセスの親はのinitプロセスになります/sbin/init
。これは、すべてのUnixライクなオペレーティングシステムで最初に開始されるものです。現在、このプロセスはデーモンと呼ばれ、TTYが関連付けられていません。
Pythonのデーモンの例を次に示します。
import sys, os, time
pid = os.fork()
# there now exist two processes
if pid > 0: # If this is the parent,
sys.exit(0) # quit.
# this is the background part:
time.sleep(5)
print "Hello, World!"
厳密に言えば、まだ1つではありません。また、現在の作業ディレクトリを変更したり、標準入力とログファイルへの出力を制限したりする必要があります。このウィキペディアの記事で、詳細な内容を読むことができます。
この例を実行すると、コマンドラインで開始したプロセスが終了した場合でも、2秒後に印刷されます。このプロセスのコピーは、initによって「by」で実行されます。
/proc/*/fd
)。適切に動作するデーモンは、stdout、stderr、およびstdinへのハンドルを放棄することにより、ttyから完全に切り離されます。
マルチタスクコンピューターオペレーティングシステムでは、デーモンは、対話型ユーザーの直接制御下ではなく、バックグラウンドプロセスとして実行されるコンピュータープログラムです。従来、デーモンのプロセス名は、プロセスが実際にデーモンであることを明確にするため、およびデーモンと通常のコンピュータープログラムを区別するために、文字dで終わります。たとえば、syslogdはシステムロギング機能を実装するデーモンであり、sshdは着信SSH接続を提供するデーモンです。
デーモンのレイヤーを見ることができるように