我正在使用prunsrv来创建Windows服务。我想问你是否可以查询进程的状态(如果它正在运行,已停止)或进程是否存在。另外,我想用Java程序阅读pid文件的内容。
答案 0 :(得分:1)
是的,有一个技巧:在服务的启动代码中创建一个本地套接字。如果创建套接字时出错,您将知道该服务的实例已在运行。
如果要检查服务是否处于活动状态,可以连接到套接字。如果失败,则该过程不存在。
您可以通过此套接字返回服务的PID,因此“monitor”程序不需要知道日志路径和PID文件名。如果您实施启动/停止方法,您甚至可以告诉监视器您的服务状态。
这样做的最大好处是,当您的服务因任何原因终止时,操作系统将确保套接字已关闭。第二个优点是,它独立于操作系统 - 如果您需要将其移至Linux或Mac,则无需更改代码。