4

接続処理を監視するために、erlang vm とは別に epmd を起動しようとしています。

vm が epmd の前に起動する場合を除いて、これは正常に機能します。

epmdを単独で起動せずにerlang vmを起動させる方法はありますか?

4

2 に答える 2

2

役立つ質問/回答:

これらの質問/回答に沿って、erlang vm サービスを epmd に依存させることをお勧めします (これは別のサービスである必要があります)。また、最初に実行するサービスの 1 つとして epmd を実行すると、毎回 erlang の前に開始できるはずです。ただし、これを行う方法は、実際にはオペレーティング システムと展開の実装の詳細によって異なります。

また、それほどエレガントではない解決策は、initスクリプトを変更することです。これにより、epmdが開始するのを手動で待機します。あなたの走行距離は異なる場合があり、非常に単純なアプローチ (ただし、例としては有用) は次のようになります。

    while [ true ]; do
      pid=`pidof epmd`;
      if [ "$pid" == "" ]; then
        sleep 1; # Wait a bit more
      else
        break;
      fi
    done
    # Continue initialization

コードは最大試行回数を考慮する必要があることに注意してください。また、pidofはLinuxでのみ機能するなどです。このソリューションが好きかどうかはわかりませんが、仕事はできます。

また、洗練されていない解決策として、erlang が実行する epmd を独自のバイナリに置き換えることができます。これは、必要なことは何でも実行します (上記のコードのように、epmd の開始を偽装するか、独自に実行するなど)。

それが役に立てば幸い!

于 2014-02-25T12:36:15.370 に答える