2012-02-23 18 views
1

私はプロセスP1とP2の2つを持っています。 P1からP2にpingして、P2 にそれが生きて働いていると伝えたいと思います。それ、どうやったら出来るの?あるプロセスから別のプロセスにpingする必要があります

+1

どのようなプロセスですか?彼らはどの言語で書かれていますか?彼らは同じマシンにいますか? – Thilo

+1

あなたの言語、OS、および "ping"の定義に応じて、単純なkill 0が機能するかもしれません。 – Flimzy

答えて

0

(ファイルシステムがあることを仮定して)、あなたは「ハートビートファイル」を使用することができます。 P1は現在のタイムスタンプでファイルを定期的に更新し、P2はそれが古すぎるかどうかを確認することができます。そこにP1のプロセスIDを書き込むこともできます.P2はそのPIDがまだ生きているかどうかを調べることができます。

+0

こんにちはThilo、 ありがとうございました。私は心拍ファイルを知らない。それを理解するための情報やリンクは大変ありがとうございます。 – Naveen

+0

プロセスが実行されている間に更新される、既知の場所にある小さなテキストファイルです。 – Thilo

1

P1が定期的に接続するネットワークソケットリスナーをP2にセットアップできます。より具体的なコード例に使用する言語を指定する必要があります。

下記のThiloと同じシステム上にあるので、単純なファイルを「私は生きている」というメッセージとして使用できます。次に例を示します。

  • 「P1」は、数秒ごとに現在の時刻でファイルを更新しますか?ここでは、シェルの例は、(申し訳ありませんが、私はC++うまくやっていない)である:
 
    rm /tmp/P1.heartbeat 
    date +%s > /tmp/P1.heartbeat 
  • P2は、ファイルを開く-閉じ読み込みます。次に、現在の時刻と比較し、ファイル内の時刻が「古すぎる」場合は適切な処置をとります。
    • 新しいファイルを再度読み込むためには、読み込み後にP2システムがファイルを閉じていることを確認してください。同じマシン上で
 
    X=`cat /tmp/P1.heartbeat` 
    NOW=`date +%s` 
    DIFF=$(($NOW - $X)) 
    if [ $DIFF -gt 60 ] ; then 
     echo P1 died $DIFF seconds ago. 
    fi 
+0

私はC++を使用しています。プロセスは同じマシン上で実行されます。 – Naveen

+0

ここでpingを実行すると、プロセスP1は、プロセスP2が生きていることを繰り返し指示する必要があります。 pingを停止すると、P2はp1を終了します。 – Naveen

関連する問題