• ベストアンサー

なぜメールサーバは子プロセス(デーモン)?

一般的にメールサーバはデーモン(子プロセス)としてバックグラウンドで稼動していますよね? ふと思ったのですが、なぜ子プロセスでなければならないのですか? メールサーバを親プロセスをデーモンとして稼動させるのはマズイですか? いま、メールサーバみたいなものを(デーモンとして)作ろうとしていたので、ちょっと疑問に思ってしまいました…

質問者が選んだベストアンサー

  • ベストアンサー
  • moritan2
  • ベストアンサー率25% (168/670)
回答No.2

その方が簡単だからです。 メールサーバはいつでも接続される可能性があり、一つの処理に時間がかかって次のメールの処理ができなかったなんていうことは許されません。 こういう場合、一つのプロセスで複数のメールを処理するのはできないことはありませんが、複雑です。そんなことをするより、接続があったらそのソケットハンドルを処理するだけのプログラムをforkしたほうが単純です。 forkされた子プロセスは渡された接続だけを処理し、ちゃんと送信ができるまで待たされても、親のプログラムはまた新しい接続を処理できます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

親プロセスがデーモンになっているという事は、その祖父プロセス(例えばシェルだったり、/etc/rcスクリプト)は、プロセス終了待ちになってしまい、制御が戻ってきません。 ――という事を質問してます? 外してるかも。

参考URL:
http://www.google.com/search?q=%E3%83%87%E3%83%BC%E3%83%A2%E3%83%B3+%E5%88%B6%E5%BE%A1%E7%AB%AF%E6%9C%AB+fork
全文を見る
すると、全ての回答が全文表示されます。
noname#39970
noname#39970
回答No.1

実行ユーザ(パーミッション)辺りで もう一度調べ直してみた方が良い

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • デーモンプロセスの起動について

    こんにちは。初心者で大変申し訳ないのですが、 調べてもどうしても分からなかった為、質問させて 頂きました。お手数をおかけしますがご教授頂ければ幸いです。 perlで作成したデーモンプロセスの起動方法なのですが、私のような初心者の考えだと「ブラウザからリクエストして起動する」とか「sshで入って起動する」といった方法しか思いつかないのですが、それだとデーモンの場合、ブラウザを閉じたタイミングやSSHを遮断したタイミングでプログラムが終了してしまい、どうしていいのか分からず困っております。 例えば while(1) { print "a\n"; sleep(10); } といった単純な無限ループスクリプトをデーモン状態に持続的に動作させたい場合、どのような方法で行うべきなのでしょうか? 初心者で申し訳ございません。宜しくお願い致します。 サーバー:レンタルサーバー(RedHatLinux8.0) root権限なし,デーモンOK

    • ベストアンサー
    • Perl
  • サーバプロセスとクライアントプロセスの通信

    サーバプロセスとクライアントプロセスの通信がどのように行われているのか確認させてください。 現在、以下の認識でいます。 (1)TCPコネクション  サーバ側ポート番号【23】と、それぞれのクライアント側ポート番号【****】との間に確立する。   (2)通信処理  クライアント側のプロセスAは、サーバ側のプロセスA(子)  クライアント側のプロセスBは、サーバ側のプロセスB(子)  クライアント側のプロセスCは、サーバ側のプロセスC(子)  との間で通信を行う。 ※添付の図も参照ください。 認識に相違ないでしょうか。 サーバプロセスとクライアントプロセスの通信を行う際、プロセス間(ポート間?)の通信には、IPアドレスとポート番号を組み合わせたソケットを用いるため、サーバ側ではソケット【192.168.0.1:23】を1個作成し、クライアント側ではソケット【192.168.0.2:****】をプロセス分作成すると考えています。 このとき、クライアントプロセスAはサーバプロセスA(子)と通信を行いますが、サーバ側で作成されているソケットは1つであるため、どの子プロセスに対してデータをせばいいのか判別できないのではないかと考えています。 ※クライアントプロセス(A、B、C)はソケット(サーバ側)【192.168.0.1:23】に対して送信されるため。 上記について、何らかの仕組みがあるのでしょうか。 よろしくお願いします。

  • 子プロセスの状態を親プロセスに渡したい

    今、C言語を用いてシェルを作成していて、そこでcpコマンドを実現したいと思っています。その際、子プロセスを生成し、そこでgetcwdやchdirを使用してディレクトリの移動を行うのですが、子プロセスを終了させると親プロセスでは移動前のディレクトリに戻ってしまいます。 子プロセスでディレクトリを移動したときに,親プロセスでも移動された状態にするにはどうすればいいのでしょうか?それとも、この操作は親ディレクトリでしか行えないのでしょうか? できるだけ詳しく教えていただけるとありがたいです。回答よろしくお願いします。

  • 子プロセス、

    親プロセスから子プロセスを生成するとは具体的に何を意味しているのでしょうか? またresume文とはなんでしょうか? 何をしてくれているのでしょうか? なぜUNIXは安定していると言われるのでしょうか? 聞いたけど忘れてしまいました、 お願いします。

  • メールデーモン

    お世話になっております。 メールを送ったさいに相手先のメールアドレスが間違っていたり、サーバートラブル等のエラーとして戻ってきてしまうメールについて、ご存知のかた、宜しくお願い申し上げます。 毎回送信できていたのに、時々メールデーモンとして戻ってきてしまう事があります。 けれども、確かに自分にはメールデーモンとして戻ってきてしまっているのに、相手に届いたかどうか電話で確認すると「メールはちゃんと届いている」と言います。 一人や二人だけの話ではなく、過去複数に渡って共通しているそのメールのプロバイダーは決まってOCN。またはメールがOCNでなくともOCN接続だったり、関連していたりすると起こっているようです。たまたまなのでしょうか・・・すでに記憶するだけでも10回は越えています。 発生直後にOCNにもメールで2度ほど問い合わせをしたのですが「問題は発生していません」とだけの回答でした。きちんとした質問には応じてもらえませんでした。 メールデーモンと戻ってきてくれるので、再度の確認を取るだけで済んでいるので、そんなに困ってはいないのですが、どうしてこんな事が起こるのだろうと不思議です。 このような経験をするようになってから、プロバイダーを3つ程変えていますが、その間メールデーモンとして戻ってきても相手に届いているといった状態は変わりませんでした。 以上のような経験、もしくは原因をご存知のかた、どうか宜しくお願い申し上げます。 自分に問題があるようなら直したいと思います。

  • バックグラウンド・プロセス等について教えて!技術

    win10 タスクマネージャーを見ると画像のように”バックグラウンド・プロセス〟や”Windows・プロセス〟というのが動いているのが分かります。 (質問) 1 バックグラウンド・プロセスの見方について・・ 例えば,CPUが0%...メモリ7MBということは,プログラム自体は始動しているが,稼働はしていないということですか? 2 このバックグラウンドプロセスや,Windowsプロセスが動いているのと,物凄く重たくなるのですが削除するのは駄目でしょうかね? 3 xpの時は,これほどまでプロセスが表示されませんでしたが,win10はedgeのためにこれだけのプロセスが動いているのでしょうか? お詳しい方,宜しくお願い致します。

  • デーモンメールを装うウィルスってありますか?

    友人の出来事なのですが、 携帯電話のメールに、出した覚えのないデーモンメールがまとめて5通ほど来たそうです。 その数分前に、私のパソコンのアドレスから、迷惑メールのような内容のメールがあったそうです。 その時刻、私のパソコンではウィルスの完全スキャンを行っていました。 受信が携帯電話なので詳しいことは分からないのですが(ヘッダ等)、 ウィルススキャンの結果、いくつかのウィルスが検出されていたので、 私のパソコンでウィルスが何かの拍子に実行されてしまい、 アドレス帳に登録されていた友人のアドレスへ、ウィルスメールが送信されたのかなと考えています。 ただ、その後のデーモンメールの原因が分からないので、ちょっと心配になっています。 時間がほぼ同じ時だったらしいので、関連性があるのではないかと思っているのですが……。 私の中での、デーモンメールの可能性としては、 1.全くの偶然に、友人のアドレスで送信元偽造されたメールがどこかのサーバーへ届き、送信先不明で友人の元へデーモンメールが来た。 2.デーモンメールを装うウィルスが存在して、私のパソコンで実行された。 3.送信元を偽造するウィルスが私のパソコンで実行され、友人のアドレスを送信元として偽造し、その宛先が存在しなくて、返ってきたデーモンメール。 いずれにしても、今のところ友人の携帯電話や周囲の友人には特に被害がないようなのでよかったのですが、 分かるようなら、原因が何だったのか知りたいと思い、 デーモンメールを装うウィルスがあるのかとか、他の原因が何かないかとか思って、質問しました。 どなたか、予想でもいいので回答おねがいします。

  • Widnowsサーバのプロセスの稼動監視

    こんばんは。 今回、JP1でWidnowsサーバのプロセスの稼動監視を設計しています。 皆様のご経験から監視の対象となるようなプロセスを ご存知でしたら、参考に教えて頂けますでしょうか。 尚、サーバですがActiveDirecotry、とメンバーサーバの2種類があります。 よろしくお願いします。

  • Apacheの子プロセスが再起動する要因は?

    こんにちは 環境: Windows2000サーバ Apache2.0.54+mod_ssl PHP5.12 apacheの設定でhttpd.confのMaxRequestsPerChildを0に 設定しているのですが、apacheへのSSLアクセスを継続して 行っていると、apacheの子プロセスのPID(プロセスID) が変わっています。 これは、子プロセスが再起動している証拠だと思うので すが、なぜMaxRequestsPerChildを0に設定しているのに、 子プロセスが再起動するのでしょうか?(設定が効きません?) ちなみに、親プロセスは再起動していません。

  • httpdの子プロセスがゾンビ化する原因

    httpdは複数の子プロセスを生成しますが、この子プロセスがゾンビプロセス化してしまう ことがあります。 このゾンビ化してしまう原因として考えられるものを教えて下さい。 『何らかの理由で子プロセスが停止せずに親プロセスが停止した』等、あいまいな答えでも 構いません。もちろん具体的であれば、とても助かりますが…。 思いつく限りいくつでも構いませんので、教えて下さい。 ちなみに、私が使用しているマシンで上記現象が発生している訳ではなく、一般的な事例として 子プロセスのゾンビ化の原因になり得る事象を知りたいと思っていますので、構成情報などは あまり気にせずに答えて頂けると幸いです。 よろしくお願いします。