OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

デーモンモードとは何でしょうか?

  • すぐに回答を!
  • 質問No.230337
  • 閲覧数3859
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 38% (23/59)

プログラムをデーモンモードで起動するとは、どういう意味なのでしょうか?
プログラムは、UnixCで書かれております、ソースに何か手を加える必要があるので
しょか。それから何らかのファイルに記述する必要があるのでしょか。
よろしくお願い致します。
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル11

ベストアンサー率 58% (190/327)

もう少し具体的な説明をします。
ちょっと、表現をミスった点もありますので。
・・・どうかボロが出ませんように(爆)

・デーモン(daemon)とは
デーモンは、起動されるとシステムがシャットダウンするか、手動で止めるまで常に存在しつづけるプロセスの総称です。(若干の例外もありますが、概ねこうです)
バックグラウンドで動作し、制御端末を持たないプロセスです。前回シェルと言ってしまったのはまずかったです。
制御端末の間違いです。
ps ax 等で見てみると、制御端末を示すカラム(TTとかTTY)が?マークになっています。
ちなみに、&は正確には、プロセスをバックグラウンドで処理するという事です。この時点で、制御端末から切り離したい場合、もう1クッション必要です。

・デーモンを作るには
作りたいデーモンがどのような物であっても、デーモンとして動かす方法はさほど変わりないはずです。
よーするに、システムコールを使うわけですが・・・。
1.fork()して、制御端末を持たない子プロセスを生成する。
2.親プロセス(実際に実行されたプロセス)は、そのまま終了する。
3.setsid()で新しいセッションを生成する。
4.その後、必要に応じてchdir()で作業ディレクトリに移動し、もろもろの処理を行う。
5.エラー等は、syslog()でsyslogdに渡す方がいいかもしれません。

とまあ、こんな具合です。
実際のコーディング例は、世の中にいくらでもサンプルがありますので、探して見てください。
というか、私はシステム管理屋でバリバリのUNIXプログラマでは無いので、これ以上は無理です(爆)

どちらかというと、シェルスクリプトをデーモンのように動かしたりする方が得意なもんで(笑)

指針程度には、お役に立てましたかね?
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル12

ベストアンサー率 31% (182/583)

バックグラウンドで動作させるということでしょうか?それなら多分次のように、最後に"&"をつけるってことじゃないですかね。 # /usr/sbin/hogehoge & 自信はありませんが。。。
バックグラウンドで動作させるということでしょうか?それなら多分次のように、最後に"&"をつけるってことじゃないですかね。

# /usr/sbin/hogehoge &

自信はありませんが。。。


  • 回答No.2
レベル11

ベストアンサー率 58% (190/327)

デーモンとして動くという事は、確かにバックグラウンドで動いている事が条件の一つになります。 もう一つ、起動したシェルから完全に切り離されている事が必要です。 実行時に、&を使ってバックグラウンド処理に切り替えても、これは必ずしもシェルから切り離されておらず、ログアウトすると、止まってしまう事もあります。 この辺り、OSやシェルの種類によって微妙に動きが違うみたいなんですが・・・。 正し ...続きを読む
デーモンとして動くという事は、確かにバックグラウンドで動いている事が条件の一つになります。
もう一つ、起動したシェルから完全に切り離されている事が必要です。
実行時に、&を使ってバックグラウンド処理に切り替えても、これは必ずしもシェルから切り離されておらず、ログアウトすると、止まってしまう事もあります。
この辺り、OSやシェルの種類によって微妙に動きが違うみたいなんですが・・・。

正しくデーモンとして振舞うプログラムは、プログラムもそれなりの処理が必要です。
有名どころで例をあげれば、sendmailやApache等もそうです。
あまり詳細を説明せよと言われるとボロが出そうなので避けますが(爆)
起動時に自分自身の複製プロセスを作り、直接起動されたプロセスは、そのまま終了すると言った処理を行う事でシェルから完全に切り離され、デーモンとして動くようになるとか。

少しは参考になりましたか?
補足コメント
SpeedStep

お礼率 38% (23/59)

OSは、Solalis8です。/etc/rc3.dにS99xxxという名前で登録し
その中のシェルで
プログラム名 &
とやっているのですが、デーモンモードでは起動しません。
C言語でそのような書き方があるのでしょうか?
投稿日時 - 2002-03-07 19:11:58
  • 回答No.4
レベル12

ベストアンサー率 67% (310/456)

sampleは、daemon.c というズバリな名前のものを各種ソースから探すとする見つかります。 探す際は、自分のプログラムと動作トリガーの似たものを探すと良いですね。 (タイマー型、ソケットリッスン型、割り込み待ち型など) ...続きを読む
sampleは、daemon.c というズバリな名前のものを各種ソースから探すとする見つかります。

探す際は、自分のプログラムと動作トリガーの似たものを探すと良いですね。
(タイマー型、ソケットリッスン型、割り込み待ち型など)
お礼コメント
SpeedStep

お礼率 38% (23/59)

daemon.cで検索し、いろいろな情報が得られました。
何とかなりそうです。有難うございました。
投稿日時 - 2002-03-08 16:32:21
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ