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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
Linuxで/etc/cron.dって何のフ...
-
実行中のプログラムを調べるには?
-
タスクマネージャのプロセス名
-
コマンドライン上でファイルを...
-
タスクマネージャで終了できな...
-
/etc/inittabの"wait"アクショ...
-
プロンプトが返らない
-
Dirコマンドでフォルダ内ファイ...
-
batである文字列内に特定の文字...
-
SONYの音楽ソフト「x-アプリ」...
-
エクセルの表にヘンな枠が・・・
-
スクリプトのエラー「unexpecte...
-
Ctrl+Zで戻りすぎた場合、逆に...
-
ラズパイで『’test.service’をs...
-
空きIPアドレスを探す方法
-
シェルスクリプトでエラーが出ます
-
バッチファイル内の各コマンド...
-
エクセルからアクセスのプロシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TOPコマンドで表示するCPU使用...
-
プロセス、サービス、デーモン...
-
タスクバーの音量アイコンをク...
-
タスクマネージャのCPU率がおか...
-
CPU使用率が常に50~10...
-
System Idle Processってなに?...
-
コマンドライン上でファイルを...
-
Windowsで作れるスレッド最大数...
-
タスクマネージャで終了できな...
-
プロンプトが返らない
-
ps コマンドのステータス。S Ss...
-
プロセスがタスクマネージャー...
-
Powershell プロセス二重起動
-
【プログラム】 iu14d2n.tmp ...
-
Windowsで同時にオープンできる...
-
Windows 10のエクスプローラー...
-
ネットワーク使用率約75%維持状...
-
httpdの子プロセスがゾンビ化す...
-
IE プロセスが消えない
-
linuxでプロセスが動いているCP...
おすすめ情報