
No.3ベストアンサー
- 回答日時:
もう少し具体的な説明をします。
ちょっと、表現をミスった点もありますので。
・・・どうかボロが出ませんように(爆)
・デーモン(daemon)とは
デーモンは、起動されるとシステムがシャットダウンするか、手動で止めるまで常に存在しつづけるプロセスの総称です。(若干の例外もありますが、概ねこうです)
バックグラウンドで動作し、制御端末を持たないプロセスです。前回シェルと言ってしまったのはまずかったです。
制御端末の間違いです。
ps ax 等で見てみると、制御端末を示すカラム(TTとかTTY)が?マークになっています。
ちなみに、&は正確には、プロセスをバックグラウンドで処理するという事です。この時点で、制御端末から切り離したい場合、もう1クッション必要です。
・デーモンを作るには
作りたいデーモンがどのような物であっても、デーモンとして動かす方法はさほど変わりないはずです。
よーするに、システムコールを使うわけですが・・・。
1.fork()して、制御端末を持たない子プロセスを生成する。
2.親プロセス(実際に実行されたプロセス)は、そのまま終了する。
3.setsid()で新しいセッションを生成する。
4.その後、必要に応じてchdir()で作業ディレクトリに移動し、もろもろの処理を行う。
5.エラー等は、syslog()でsyslogdに渡す方がいいかもしれません。
とまあ、こんな具合です。
実際のコーディング例は、世の中にいくらでもサンプルがありますので、探して見てください。
というか、私はシステム管理屋でバリバリのUNIXプログラマでは無いので、これ以上は無理です(爆)
どちらかというと、シェルスクリプトをデーモンのように動かしたりする方が得意なもんで(笑)
指針程度には、お役に立てましたかね?
No.4
- 回答日時:
sampleは、daemon.c というズバリな名前のものを各種ソースから探すとする見つかります。
探す際は、自分のプログラムと動作トリガーの似たものを探すと良いですね。
(タイマー型、ソケットリッスン型、割り込み待ち型など)
No.2
- 回答日時:
デーモンとして動くという事は、確かにバックグラウンドで動いている事が条件の一つになります。
もう一つ、起動したシェルから完全に切り離されている事が必要です。
実行時に、&を使ってバックグラウンド処理に切り替えても、これは必ずしもシェルから切り離されておらず、ログアウトすると、止まってしまう事もあります。
この辺り、OSやシェルの種類によって微妙に動きが違うみたいなんですが・・・。
正しくデーモンとして振舞うプログラムは、プログラムもそれなりの処理が必要です。
有名どころで例をあげれば、sendmailやApache等もそうです。
あまり詳細を説明せよと言われるとボロが出そうなので避けますが(爆)
起動時に自分自身の複製プロセスを作り、直接起動されたプロセスは、そのまま終了すると言った処理を行う事でシェルから完全に切り離され、デーモンとして動くようになるとか。
少しは参考になりましたか?
この回答への補足
OSは、Solalis8です。/etc/rc3.dにS99xxxという名前で登録し
その中のシェルで
プログラム名 &
とやっているのですが、デーモンモードでは起動しません。
C言語でそのような書き方があるのでしょうか?
No.1
- 回答日時:
バックグラウンドで動作させるということでしょうか?それなら多分次のように、最後に"&"をつけるってことじゃないですかね。
# /usr/sbin/hogehoge &
自信はありませんが。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タスクバーの音量アイコンをク...
-
TOPコマンドで表示するCPU使用...
-
System Idle Processってなに?...
-
ときどきCPU使用率が100%になっ...
-
プロセス、サービス、デーモン...
-
Powershell プロセス二重起動
-
CPU使用率取得方法について
-
IE プロセスが消えない
-
NETSTATのコマンドプロンプト画...
-
シェルスクリプトで実行したコ...
-
プロンプトが返らない
-
killコマンドの終了と強制終了...
-
アプリケーションの最大メモリ...
-
Telnetをログアウトしても処理...
-
UNIXのファイルタイプp(...
-
CPU使用率が常に50~10...
-
Dirコマンドでフォルダ内ファイ...
-
ラズパイで『’test.service’をs...
-
SONYの音楽ソフト「x-アプリ」...
-
net use /d の強制実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
プロンプトが返らない
-
タスクバーの音量アイコンをク...
-
System Idle Processってなに?...
-
プロセスがタスクマネージャー...
-
タスクマネージャに表示されな...
-
httpdの子プロセスがゾンビ化す...
-
タスクマネージャのCPU率がおか...
-
コマンドライン上でファイルを...
-
ps コマンドのステータス。S Ss...
-
Powershell プロセス二重起動
-
デーモンモードとは何でしょうか?
-
CPU使用率が常に50~10...
-
linuxでプロセスが動いているCP...
-
Windowsで作れるスレッド最大数...
-
UNIXのファイルタイプp(...
-
アクロバットを終了しても、プ...
-
プロセスがファイルを掴んだま...
-
イラストレータでの透明部分の...
おすすめ情報