2012-05-28 122 views
2

我正在使用prunsrv来创建Windows服务。我想问你是否有可能查询进程的状态(如果它正在运行,停止)或进程是否存在。另外我想用Java程序阅读pid文件的内容。检查服务正在运行procrun

回答

0

是的,诀窍:在服务的启动代码中创建一个本地套接字。如果您在创建套接字时遇到错误,您将知道该服务的一个实例已在运行。

如果要检查服务是否处于活动状态,可以连接到套接字。如果失败了,这个过程就不存在了。

您可以通过此套接字返回服务的PID,因此“monitor”程序不需要知道日志路径和PID文件名。如果你实施启动/停止方法,你甚至可以告诉监视器你的服务的状态。

这样做的最大优势在于,当服务因任何原因终止时,操作系统将确保套接字已关闭。第二个好处是,它独立于操作系统 - 如果您需要将其移至Linux或Mac,则不需要更改代码。

相关问题