
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で質問しましょう!
似たような質問が見つかりました
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- タブレット ワンドライブ内のWordファイルの編集について 1 2022/07/01 15:59
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
- セキュリティホール・脆弱性 win更新ファイルについて 2 2023/03/13 11:01
- 電気・ガス・水道業 PLC プログラム 1 2023/02/03 22:29
- Windows 10 UEFIのPCにWindows7をインストールしてVirtualPC2007を使用する。 5 2022/12/10 11:01
- その他(プログラミング・Web制作) ロボットの作り方を教えて下さい! なにも知らない素人です。 全て自作する場合、どうすればよいでしょう 6 2022/12/18 01:25
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- Windows 10 SONYの音楽ソフト「x-アプリ」について 3 2023/01/29 19:09
- その他(コンピューター・テクノロジー) PC利用中に勝手に起動する窓を消し去る方法を教えて下さい。 1 2023/05/08 16:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
プログラムを一時停止→再起動→...
-
タスクバーの音量アイコンをク...
-
CPU使用率25% の正体を...
-
メディアプレイヤーが終了でき...
-
ポート番号80について
-
コマンドライン上でファイルを...
-
プロセスの終了について教えて...
-
mdbコマンドで引数の値を見たい
-
chroot jailについて教えてくだ...
-
ログオン プロセスの初期化に失...
-
プロセス間でのメッセージキュ...
-
win10でCPU使用率100% 表示だけ?
-
セーフモードコマンドプロント...
-
CPU使用率が上がって動かなくなる
-
指定したプログラムの実行を禁...
-
マルチスレッドとマルチプロセス
-
Unixの親プロセスと子プロセス...
-
prl_vm.appによるCPU稼働について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
タスクマネージャのCPU率がおか...
-
タスクバーの音量アイコンをク...
-
System Idle Processってなに?...
-
アクロバットを終了しても、プ...
-
タスクマネージャに表示されな...
-
linuxでプロセスが動いているCP...
-
プロンプトが返らない
-
ネットワーク使用率約75%維持状...
-
イラストレータでの透明部分の...
-
プロセスがタスクマネージャー...
-
プロセスの終了について教えて...
-
CPU使用率が常に50~10...
-
Windowsで作れるスレッド最大数...
-
強制終了できないプロセスの強...
-
Windowsで同時にオープンできる...
-
デーモンモードとは何でしょうか?
-
cpuの使用率が50%以上常にあ...
-
killコマンドの終了と強制終了...
おすすめ情報