プログラムをデーモンモードで起動するとは、どういう意味なのでしょうか?
プログラムは、UnixCで書かれております、ソースに何か手を加える必要があるので
しょか。それから何らかのファイルに記述する必要があるのでしょか。
よろしくお願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

もう少し具体的な説明をします。


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

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

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

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

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

指針程度には、お役に立てましたかね?
    • good
    • 0

sampleは、daemon.c というズバリな名前のものを各種ソースから探すとする見つかります。



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

daemon.cで検索し、いろいろな情報が得られました。
何とかなりそうです。有難うございました。

お礼日時:2002/03/08 16:32

デーモンとして動くという事は、確かにバックグラウンドで動いている事が条件の一つになります。


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

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

少しは参考になりましたか?

この回答への補足

OSは、Solalis8です。/etc/rc3.dにS99xxxという名前で登録し
その中のシェルで
プログラム名 &
とやっているのですが、デーモンモードでは起動しません。
C言語でそのような書き方があるのでしょうか?

補足日時:2002/03/07 19:11
    • good
    • 0

バックグラウンドで動作させるということでしょうか?それなら多分次のように、最後に"&"をつけるってことじゃないですかね。



# /usr/sbin/hogehoge &

自信はありませんが。。。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCivilization4というPC用ゲームですがデーモンツールでできません??

Civilization4を買いました
現在のPCはVistaで問題なく使えてるのです


が、

ゲームCDを傷付けるのが嫌なので
いつもはイメージを吸出しデーモンツールを使用してゲームをしてました
これだといちいちPC内にゲームCDを入れなくてもよいし
CDも綺麗なまま保てるので

でも、Civilization4をデーモンツールを使って使用しようと思うと
エミュレーター機能を切ってください的な表示が出ます
エミュレーター?デーモンツールを終了させると仮想DVDが出なくなるのですが・・・


前のPC(OS XP)のときは
Civilization3(4ではなかったですが)をこのやり方で問題なく使ってたのですが・・

これはどういった現象なのでしょうか???
XPでも同じようにCivilization4はデーモンツールを使って使用できなくなってるのでしょうか?

Aベストアンサー

最近のソフトはDeamonToolsなどの仮想ドライブツールが動作していると、ソフトの起動を抑制する機能が備わっているようですね。違法コピー対策ですから、該当ツールを削除する必要があります。

ネット上に流れているパッチを適用すると使えるような書き込みを見かけますが、ほとんどの場合ウイルスやスパイウェアの感染源ですので手を出さないほうがいいでしょう。

ソフトの使用許諾によっては、メディアのバックアップとしてなら複製を作ってもいいと記載されている場合もありますので、説明書や使用許諾書をよく読んでみてください。

Q外部ソースにNTPデーモンを属す方法

外部ソースにNTPデーモンを属すために、
あなたは/etc/ntp.confファイル内の変更可能な何を修正する必要がありますか?

と問題にあります。

答えは「pending」なのですが、ネットで検索しても見当たりません。

本当にこれであっているのでしょうか?

回答のほどよろしくお願い致します。

Aベストアンサー

外部ソースに属す、という意味がイマイチはっきり分かりませんが、外部NTPサーバーに接続して時刻同期する、という意味なら、serverとrestrict指定を行えばOKです。

「pending」というのは「保留」という意味ですから、問題を作った人が答えがはっきり分からず、解答を保留している、という意味ではないでしょうか?ntp.confには「pending」などという設定はありません。

QFTPデーモンって?

複数のPCを利用してFTPでデータのやりとりをしたいと思っているのですが、どうやら「FTPデーモン」なるものが必要だということまではわかりました。
しかし、「FTPデーモン」って何なのか、まったくわかりません。
どういうソフトがあって、どうやって使用したらいいのか教えて下さい。

Aベストアンサー

どうしてもPC(Windows95/98)でFTPサーバーを立てたいのなら、こういうソフトもあるようです。
参考にしてみてください。

参考URL:http://www.vector.co.jp/soft/win95/net/se083171.html

Qネットワークプログラムをデーモンで常駐したけれども…

シェルで文字列を交換する、簡単なチャットプログラムを作成しました。スタンドアローンで動作させた場合、きちんと相手に文字列が届き、表示されるのが確認できるのですが、/etc/xinetd.d/serverd に以下のように設定し、

#service xinetd reload

を実行し、クライアントプログラムを走らせると、接続は確立されるのですが、2,3回相手にメッセージを送ると、接続が強制的に切断され、プログラムが異常終了します。
加えて、サーバープログラムをスタンドアローンで起動させた場合
massage >
と表示させ、標準入力の入力を待機するようにしたのですがデーモンにした場合、このようには動作しませんでした。
クライアントから要求が来た場合に、新しいシェルを立ち上げ、スタンドアローンで動作させた場合と同じ動作をさせ、接続が切れた時にシェルを閉じるように設定したいのですが、これ以外にどこの設定をどのように施せばよろしいのでしょうか。
症状の原因又は、解決への答えないしヒントをおしえていただけませんでしょうか。

Aベストアンサー

それはもしや入出力をファイルと勘違いしてバッファリングされてしまっているのでは?

xinetd を使った状態での解決方法はよくわかりませんが、面倒なら新たなユーザを useradd で追加して(その後普通にpasswdでそのユーザのパスワードを設定して)、vipw でパスワードファイルを編集してそのユーザのログインシェルを自分で作ったチャットプログラムに設定してしまったらいいんじゃないかと思います。(そして外部から telnet か ssh でアクセスしてログイン名とパスワードを入れてログインする)。

そうするとどうなるかというと、仮想端末が作られた状態での通信になるので普通にコンソールや telnet からアクセスしているのと同じになるためおそらくうまく行きます。(日本語については export LANG=ja_JP.UTF-8 など、スクリプトの最初の方で初期化しておけば対応できると思います)。

p.s.
このようにするとログイン名とパスワードの入力やチェックを自作する必要がなくなりますし、ssh による暗号化通信をするとしても普通のユーザにするのと全く同じようにできるので楽です。

それはもしや入出力をファイルと勘違いしてバッファリングされてしまっているのでは?

xinetd を使った状態での解決方法はよくわかりませんが、面倒なら新たなユーザを useradd で追加して(その後普通にpasswdでそのユーザのパスワードを設定して)、vipw でパスワードファイルを編集してそのユーザのログインシェルを自分で作ったチャットプログラムに設定してしまったらいいんじゃないかと思います。(そして外部から telnet か ssh でアクセスしてログイン名とパスワードを入れてログインする)。

そうすると...続きを読む

Qデーモンツール使ってもいいか悩んでいます。

こんばんわ

PCにCDを入れて聞きたいのですが、
現在使っているPCが
ノートパソコンでCDドライブが内臓していないタイプです。
(かなり古くてXPです)

そのため、デーモンツールというのを
インストールしようとしていますが、調べたところ
「一度インストールすると消えない(何かは不明)又は消せない」
という話しを聞きました。

本当にその通りなのでしょうか?
少し使う程度なので、もし、入れても消せるんなら
使ってみたいです!

色々、デーモンツールの種類があるそうなので
「コレ」がいいとかいうのありましたら、
教えて頂けませんでしょうか?
どうぞよろしくお願いします。

Aベストアンサー

>PCにCDを入れて聞きたいのですが、
>そのため、デーモンツールというのをインストールしようとしていますが、
デーモンツールズは
「イメージCDファイルやイメージDVDファイル」
を読み込むためのものですが、用途に間違いは無いでしょうか?
(CDが無いと起動しないソフトや音楽がならないソフトがある場合などに使用)

使う手順
別PCにて、CDをイメージファイルに変換
変換した、イメージCDファイルをUSBメモリなどで、該当PCにコピー(移動)
デーモンツールズから、そのファイルを指定

上記のような手順を想定していないなら、
・外付けドライブを買う(4千円程度から)
・別PCでCDを音楽ファイルにして、コピー(MP3や劣化がいやなら、WAV)
のほうが手っ取りはやいです

>「コレ」がいいとかいうのありましたら
XPのPCでで不具合が出たことがあるので、
Alcohol 52% Free Edition を使っています
http://www.vector.co.jp/soft/winnt/util/se492945.html

Qソースからプログラムをインストールする一般的な方法をおしえてください。

ソースファイルをとってきて、解凍して、make,make installとすればいいのでしょうか?
それとも解凍したものを/usr/localにコピーしてからmake,make installとするのでしょうか?

Aベストアンサー

落としたtarボールを展開後、できたディレクトリに入って
./configure
make
sudo make install
で大概はいいかと。

Qデーモンツール ブルースクリーン

デーモンツールをインストール後、PC起動時にブルースクリーンが頻繁に表示されるようになりました。

アンイストールしたらブルースクリーンはでなくなったので、原因はデーモンツール間違いないと思うんですがどうしてブルースクリーンがでてしまうのかわかるかたいませんか?

Aベストアンサー

このソフトはハードウェアをエミュレーションしているので、不具合が有ると直ぐにWindowsの異常につながります。
相性が悪いとよく発生します。
バージョンアップを待つか他のソフトを使って下さい。

Qオープンソースで作ったソフトはオープンソースですか

オープンソースの定義があります。
http://www.opensource.jp/osd/osd-japanese.html

これによると、次の(a)、(b)のどちらが正しいのでしょうか。また、その根拠はオープンソースの定義の1~10のうちのどの項目によるのでしょうか。

(a)オープンソースソフトウェアを用いて作ったソフトは、必ずオープンソースソフトウェアでなければならない。
(b)オープンソースソフトウェアを用いて作ったソフトは、オープンソースソフトウェアであってもなくてもよい。

Aベストアンサー

どのようなライセンス規定に基づいて開発されているかによって答えは変わります。

ベースとなったOSSが、派生ソフトウェアについてもオープンソースで公開することを義務ずけているライセンスなら (a) が正解。(GPLなど)

ベースとなったOSSが、派生ソフトウェアについてソース公開を義務ずけていないライセンスなら (b) が正解。(BSDライセンスなど)

また、元となったソフトウェアがGPLであっても、改変後のプログラムをソースとしてでは無くパッチとして公開し、パッチ自体はBSDライセンスで配布などというモノもあります。

Qデーモンバスター

「デーモンバスター」を使ってみました。表示されるサービスと自分のPCで「msconfig」を使って調べたサービスと違うのはなぜ? たとえばデーモンバスターでは「ClipBook」というサービスが表示されるけど、「msconfig」、システム構成ユーティリティーにはそんな名のサービスは無い。。。

Aベストアンサー

msconfigには表示されませんが、コントロールパネル - 管理ツール - サービスには表示されております。

Qデーモンの登録について

Solaris9のデーモンの登録について教えてください。

現在、以下の場所にスクリプトファイルが登録させています。
 /etc/rc2.d/S99web-admin

今回、既存の S99web-admin の後に実行させたいスクリプトがあります。

そこで、

/etc/rc2.d/S98web-admin(Webサーバの管理用サービス:既存のものをS99からS98に変更する)
/etc/rc2.d/S99web-server1(Webサーバのサービス)

のように変更・追加しようと思っています。

(質問1)
これは「S98web-admin」が起動されるのを待ってから、「S99web-server1」が起動されるという動作になるのでしょうか?
それとも、「S98web-admin」→「S99web-server1」の順番で起動されるだけで、実行される時間間隔はその時次第(不明)、
「S98web-admin」が起動されたかの確認は行わないということになるのでしょうか?

※条件としては、「S98web-admin」が起動していることを確認してから「S99web-server1」を起動したいと考えております。

(質問2)
上記のサービスをストップさせる場合、rc5(シャットダウン用)とrc6(再起動用)の両方に追加する必要があるということになりますか?
また、ストップのスクリプトを登録しなかった場合、shutdownコマンドなどで、OSを再起動・シャットダウンした際の挙動はどのようになりますか?
killコマンドで停止しても良いようなサービスであれば、わざわざデーモンに停止の登録をする必要はないものなのでしょうか?

もしくは、根本的に考え方など間違っているような感じでしたら、その点もご指摘ください。


以上、よろしくお願いいたします。

Solaris9のデーモンの登録について教えてください。

現在、以下の場所にスクリプトファイルが登録させています。
 /etc/rc2.d/S99web-admin

今回、既存の S99web-admin の後に実行させたいスクリプトがあります。

そこで、

/etc/rc2.d/S98web-admin(Webサーバの管理用サービス:既存のものをS99からS98に変更する)
/etc/rc2.d/S99web-server1(Webサーバのサービス)

のように変更・追加しようと思っています。

(質問1)
これは「S98web-admin」が起動されるのを待ってから、「S99web-serv...続きを読む

Aベストアンサー

>Webサーバの管理用サービス:既存のものをS99からS98に変更する

もしこれがOS標準のものであれば、番号は変えない方が良いでしょう。個別の環境変更は、分かっていて管理できるのであれば構いませんが、大筋忘れますから。

>/etc/rc2.d/S99web-server1 (Webサーバのサービス)

/etc/rc2.d/S991Web-server1で良いのでは?

>(質問1)
順番に起動されますが、&が付いているなら、前のサービスが起動完了した後に次のサービスが起動されるという保証はありません。必要であれば、次のサービス起動時に前のサービスが完了しているか確認してください。

>(質問2)
SIGKILLで終了しても構わないサービスであれば、rc5への登録は不要です。中途半端に終了しては困るのであれば、/etc/rc2.d/S99web-server1 stopのように停止させましょう。
rc6へは登録しておいた方が良いと思います。


人気Q&Aランキング

おすすめ情報