2012-02-23 49 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

相关问题