プログラムをデーモンモードで起動するとは、どういう意味なのでしょうか?
プログラムは、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などの仮想ドライブツールが動作していると、ソフトの起動を抑制する機能が備わっているようですね。違法コピー対策ですから、該当ツールを削除する必要があります。

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

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

QOS起動中にデーモンの起動をスキップしたい

Fedora6でOS起動中にSendmailの起動でフリーズして立ち上がらなくなってしまいました。(OKが出ずに停止)
Sendmail自体使っていないので、これをスキップしてOSを立ち上げたいのですが、スキップキーなどあるのでしょうか。
宜しくお願いします。

Aベストアンサー

シングルユーザーモードで起動すれば、ほとんどのデーモンが起動しない状態でスタートします。

Q【バンダイのたまごっちの生みの親である横井昭裕さんは】現在はバンダイを退職してウィズという会社の社長

【バンダイのたまごっちの生みの親である横井昭裕さんは】現在はバンダイを退職してウィズという会社の社長ですがこのウィズという会社は何を作っている会社ですか?

大ブームのスマホアプリの黒猫のウィズのウィズですか?

Aベストアンサー

じつは今年の3月にバンダイナムコホールディングスがTOBを実施して、完全子会社化してますよ。

今までの商品は
たまごっち
デジタルモンスター
陰陽闘神機
レジェンズ
クラッシュギア
プリモプエル
PaPiPuペット
ドラゴンクエスト あるくんです
ロコボ
おしゃべりなちゅどん
空中戦機AIRBOTS
G SLOT
慰謝料電卓
キョロディ
ジャケぐるみくーた

で、玩具がメインです。

黒猫のウィズは、ソシャゲー会社の株式会社KLabの従業員だった馬場功淳が、個人的に副業で始めたコロニーな生活という位置ゲーを法人化した株式会社コロブラのアプリです。
まったく別会社ですね。

Q停止したデーモンをチェックして自動起動する方法

いつもお世話になっております。

Fedora Core1で自宅サーバを運用しています。
HTTP、SMTP/POPを運用しています。
運用している中で、時々受信メールサーバが落ちてしまうことがあります。原因としては様々なケースがありますのでそれについては個々に解決しているのですが、メールが落ちてしまうと、メールを利用させてあげてる知人などに迷惑がかかってしまいます。

そこで、サービスが停止してしまった際には自動的に感知して起動するような仕組みを取り入れたいのですが、可能でしょうか?
POPサーバのアプリケーションは、dovecotです。
アプリケーションが停止する際にはロックファイルが生成されていることがあるので、ロックファイルの削除も自動的に行いたいです。
もしくは、メールサーバがダウンしたら、あるメールアドレスに警告メールを送るなど…。

そういった仕組みを構築する方法をご存知でしたらぜひお教えください。

よろしくお願いします!

Aベストアンサー

 daemontoolsについては以下に日本語の情報があります。ここから日本語マニュアルへのリンクもありますよ。

 こういったツールを使うほかに、勉強もかねてシェルスクリプトを作ってみるというのも良いでしょう。サーバを運用している方でしたらできると思いますよ。

 シェルスクリプトについては良い本がたくさん出版されていますので、具体的な方法としてはそちらを読んでいただくとして、そのPOPサーバのプロセスの存在を「ps -aux | grep dovecotd」みたいな感じで検知してそれをif文で判断して、プロセスが存在していなかったら、そのプロセスを起動しているrcスクリプトを念のためstopをかけて、startをかければいいでしょう。stopする対象が無くてエラーが出たときの対応をするための処理が必要かもしれません。(単に「2> /dev/null」ですむかもしれませんが)
 そのシェルスクリプトをcrontabコマンドで10分に1回とか実行するようにしてあげればいいでしょう。メールを送信することも可能でしょう。(環境によりますが)

参考URL:http://www.emaillab.org/djb/daemontools/daemontools-howto.html

 daemontoolsについては以下に日本語の情報があります。ここから日本語マニュアルへのリンクもありますよ。

 こういったツールを使うほかに、勉強もかねてシェルスクリプトを作ってみるというのも良いでしょう。サーバを運用している方でしたらできると思いますよ。

 シェルスクリプトについては良い本がたくさん出版されていますので、具体的な方法としてはそちらを読んでいただくとして、そのPOPサーバのプロセスの存在を「ps -aux | grep dovecotd」みたいな感じで検知してそれをif文で判断して、プロ...続きを読む

Qデーモンの起動について

 solaris8,9 にて reboot すると自動的に起動するデーモンと、何かしらのコマンド等を発行しないと起動しないデーモンを、シングルとマルチの両方で教えてください。

Aベストアンサー

/etc配下のrc1.d、rc2.d、rc3.dの各ディレクトリを見て下さい。
rc1.dディレクトリのデーモンはシングルでも起動します。rc2.dおよびrc3.dのデーモンはマルチのみです。

Qlinuxを起動時に自動的にプログラムを起動するには?

linux(Fedora Core)を起動時に自動的にプログラムを起動するにはどうしたら良いのでしょうか?~/.xsession等に記述すればよいなどと書いてあったのですが,記述方法がわかりません.ためしに

gnome-terminal &
gnome-terminal &

としてみましたが,うまくできませんでした.Windowsのスタートアップに類する機能をlinuxで達成するにはどうしたらよろしいのでしょうか?

Aベストアンサー

login時にgnome-terminalを立ち上げたいのですかね。GUIでやるなら、

「メニュー」-「個人設定」-「他の個人設定」-「セッション」-「自動起動プログラム」-「追加」

で、gnome-terminalを追加すればよいです。

ただし、私の環境はRHL9ですから、
同じgnomeウィンドウマネージャでも全く同じであるかどうかは自信無し。参考になりますかどうか。。。

Qデーモンツールのスパイウェア

デーモンツールをインストールしたらSAVEというスパイウェアらしきものがインストールされました(ノートンで検出)、これはやばいソフトなのですか??デーモンツールは有名なので意外です。

Aベストアンサー

スパイウェアではなくアドウェアです。
ソフトを無料で使える代わりに、広告を表示するもので、
デーモンツールのインストール時に、EULAで同意が求められているものです。

ですので、消すなら、デーモンツールもアンインストールしてください。

デーモンツールをアンインストールしても消えない場合は、
ここ
http://www.symantec.com/region/jp/avcenter/venc/data/jp-adware.savenow.html
に、手動での消しかたも出ています。

Qsubversionをデーモンモードで機動

# svnserve -d

した後
このデーモンを停止するにはどうしたらいいのでしょうか?

Aベストアンサー

psコマンドなどでPIDを調べて、killコマンドで終了させて下さい。
--pid-fileオプションを使用していれば、指定したファイルにPIDが書き込まれているかと。

QノートパソコンでGTA5はできますか?

最近ノートパソコンでGTA5をダウンロードしたのですが黒い画面のまま起動せず「予期せず終了しました」と表示され終了してしまいます。
自分のパソコンのプロセッサはIntel(R)Core(TM)i7-2670QM CPU @ 2.20GHz 2.20GHz でそれ以外のスペックはすべてGTA5が起動できるものです。
プロセッサが違ってもgta5ができるかどうか教えてください。

Aベストアンサー

いろいろな原因があるので・・・
ダウンロードが失敗、インストールが失敗のどちら?
ファイアーウォールやセキュリティ対策ソフトのパーソナルファイアーウォール機能で遮断/ブロック
セキュリティ対策ソフトが邪魔する
Administratorでログインしていない
右クリック「管理者として実行」作業していない
ERR NO LAUNCHER、Error opening TM fileなどエラーが出る
アカウントが全角文字(漢字など)
ビデオカードのドライバを最新に更新してみる
メモリー不足
ソフトのバグ

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&Aランキング