2

我想制作一个在win32上运行的工具来监控我们的在线游戏服务器。服务器实际上是 .exe 文件。我需要知道它们是否已经崩溃,以便我可以重新启动它们。因此,该工具将具有 2 个主要功能:

  1. 经常检查服务器程序列表以查看它们是否正在运行
  2. 重新打开任何已崩溃的服务器的可执行文件

有没有人有任何想法或知道一个 API 开始?

4

4 回答 4

3

如果你在 Win32 中,你可以从 C# 开始使用System.Diagnostics

using System.Diagnostics;

然后得到一个进程列表:

Process[] processlist = Process.GetProcesses();

foreach(Process theprocess in processlist){
     Console.WriteLine(“Process: {0} ID: {1}”, theprocess.ProcessName, theprocess.Id);
}

从那里开始,您要如何处理信息取决于您。

于 2012-06-01T10:15:28.430 回答
0

我意识到这并不是您所要求的,但是使用诸如Nagios之类的成熟监控工具进行监控呢?您当然必须“教”监控工具了解应监控的流程,但您也将从其更高级的功能中受益。例如,在 Nagios 的情况下,这些将包括自动电子邮件通知、过程状态的在线仪表板、通过 SMS 的通知等。

于 2012-06-01T10:34:25.720 回答
0

游戏服务器应该产生日志。你应该做一个服务 / cron 作业来监控日志。根据日志的内容,你的服务应该采取相应的行动,例如重启服务、触发警报等。

于 2012-06-01T10:28:16.787 回答
0

您应该使用 Win32 api 中的 CreateProcess 或类似方法启动游戏服务器。您将在 lpProcessInformation 参数中取回一个进程句柄。

您可以使用 WaitForSingleObject 到 WaitForMultipleObjects 来等待通知该句柄,这将在进程因任何原因终止时发生。

于 2012-06-01T10:44:29.393 回答