オンラインゲームサーバーを監視するためにwin32で実行されるツールを作成したいと思います。サーバーは実際には.exeファイルです。再起動できるように、クラッシュしたかどうかを知る必要があります。したがって、ツールには2つの主な機能があります。
- サーバープログラムのリストを頻繁にチェックして、それらが実行されているかどうかを確認します
- クラッシュしたサーバーの実行可能ファイルを再度開きます
誰かが最初にAPIを知っているか、知っていますか?
オンラインゲームサーバーを監視するためにwin32で実行されるツールを作成したいと思います。サーバーは実際には.exeファイルです。再起動できるように、クラッシュしたかどうかを知る必要があります。したがって、ツールには2つの主な機能があります。
誰かが最初にAPIを知っているか、知っていますか?
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);
}
そしてそこから、あなたがその情報で何をしたいかはあなた次第です。
ゲームサーバーはログを生成する必要があります。ログを監視するには、service/cronジョブを作成する必要があります。ログの内容に応じて、サービスはそれぞれのアクションを実行する必要があります。たとえば、サービスの再起動、アラームのトリガーなどです。
これはあなたが求めていたものではないことを私は理解していますが、 Nagiosなどの本格的な監視ツールを使用して監視を行うのはどうですか?もちろん、監視対象のプロセスについて監視ツールに「教える」必要がありますが、より高度な機能からも利益を得ることができます。たとえば、Nagiosの場合、これらは自動電子メール通知、プロセスステータスのオンラインダッシュボード、SMS経由の通知などで構成されます。
win32apiでCreateProcessなどを使用してゲームサーバーを起動する必要があります。lpProcessInformationパラメータでプロセスハンドルを取得します。
WaitForSingleObjectからWaitForMultipleObjectsを使用して、何らかの理由でプロセスが終了したときに発生するハンドルが通知されるまで待機できます。