2012-02-23 54 views
1

我有兩個進程P1和P2。我想ping從P1到P2告訴P2 它是活着並且工作。我怎麼做?需要Ping從一個進程到另一個進程

+1

什麼樣的過程?他們寫了什麼語言?他們在同一臺機器上嗎? – Thilo 2012-02-23 04:10:03

+1

根據您的語言,操作系統和「ping」的定義,簡單的kill 0可能有效。 – Flimzy 2012-05-11 05:42:38

回答

0

在同一臺機器上(假設有一個文件系統),你可以使用一個「心臟跳動文件」。讓P1定期用當前時間戳更新文件,並且P2可以檢查它是否太舊。您也可以在其中寫入P1進程標識,P2可以檢查該pid是否仍然存在。

+0

Hi Thilo, 非常感謝您的回覆。我不知道心跳檔案。任何信息或鏈接瞭解,將不勝感激。 – Naveen 2012-02-23 05:56:28

+0

它只是一個知名位置的小文本文件,當您的進程在運行時進行更新。 – Thilo 2012-02-23 05:58:02

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 2012-02-23 04:33:06

+0

我的意思是在這裏ping過程P1必須反覆告訴程序P2它還活着。如果它停止ping,那麼P2將殺死p1。 – Naveen 2012-02-23 04:56:29

相關問題