我正在使用prunsrv创建 Windows 服务。我想问你是否可以查询一个进程的状态(如果它正在运行,是否已停止)或者一个进程是否存在。我还想用 Java 程序读取 pid 文件的内容。
问问题
684 次
1 回答
3
是的,有一个技巧:在服务的启动代码中创建一个本地套接字。如果您在创建套接字时遇到错误,您将知道该服务的实例已经在运行。
如果要检查服务是否处于活动状态,可以连接到套接字。如果失败,则该过程不存在。
并且你可以通过这个套接字返回服务的 PID,所以“监控”程序不需要知道日志路径和 PID 文件名。如果你实现了启动/停止方法,你甚至可以告诉监视器你的服务的状态。
这样做的最大优点是,当您的服务因任何原因终止时,操作系统将确保关闭套接字。第二个优点是它独立于操作系统工作 - 如果您需要将其移至 Linux 或 Mac,则无需更改代码。
于 2012-05-28T14:13:50.937 回答