EN JA
DAEMON(3)
DAEMON(3) FreeBSD Library Functions Manual DAEMON(3)

名称

daemonバックグラウンドで実行する

ライブラリ

Standard C Library (libc, -lc)

書式

#include < stdlib.h>

int
daemon( int nochdir, int noclose);

解説

daemon() 関数は、制御端末からそれら自体を切り離し、システムデーモンとしてバックグラウンドで実行することを望むプログラムのためのものです。

引数 nochdir 引数が 0 であるなら、 daemon() は、現在の作業ディレクトリをルート ( /) に変更します。

引数 noclose 引数が 0 であるなら、 daemon() は、標準入力、標準出力と標準エラーを /dev/null にリダイレクト (出力先を変更) します。

戻り値

The daemon() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

daemon() 関数は、失敗すると、ライブラリ関数 fork(2)setsid(2) で明記されたエラーのいずれかが errno に設定されます。

関連項目

fork(2), setsid(2), sigaction(2)

歴史

daemon() 関数は、 4.4BSD ではじめて登場しました。

警告

noclose 引数が 0 であるなら、 daemon() は、最初の 3 つのファイル記述子をクローズし、 /dev/null にそれらをリダイレクト (出力先を変更) します。通常、これらは、標準入力、標準出力と標準エラーに対応しています。しかしながら、それらのファイル記述子のいずれかが他の何かを参照するなら、それらは、クローズされたままとなり、呼び出しているプログラムの不正確な振る舞いの結果となります。プログラムが実行される前に、標準入力、標準出力、または標準エラーのいずれかがクローズされているなら、これが起こるかもしれません。そのために、 daemon() を使用するプログラムは、あらゆるファイルまたはソケットをオープンする前に、 daemon() を呼び出すべきか、またはあらゆるファイル記述子に 2 より大きな値があることを確かめるべきです。

親セッショングループリーダの fork(2) と、次の _exit(2) への呼び出しで、時期を早めて子プロセスを終了することを防ぐために setsid(2) を呼び出している間に、 daemon() 関数は、 SIGHUP を一時的に無視します。

June 9, 1993 FreeBSD