检查服务是否使用 procrun 运行



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

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

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

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

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

最新更新