Ситуация: у нас есть резервный сервер, и пространство на жестком диске может быть заполнено за 5 минут.
Что я хочу сделать? Я пытаюсь создать систему мониторинга, которая будет контролировать пространство каждые 2-3 минуты и отправлять почту, если свободное пространство меньше X ГБ.
Вопрос: Каков наилучший способ разработки такой системы? ? Как мой EXE будет работать непрерывно? Он также должен запускаться автоматически при запуске сервера.
Я буду использовать C ++
Примечание: Пожалуйста, НЕ предлагайте никаких существующих услуг / процессов мониторинга. Нам нужно разработать это для нашей платформы.
** Обновление: это мой код: **
void ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv)
{
WinService WinService_o;
gSvcStatusHandle = RegisterServiceCtrlHandler(
SVCNAME,
ServiceControlHandler);
if (!gSvcStatusHandle)
{
WinService_o.SvcReportEvent( (LPTSTR) TEXT("RegisterServiceCtrlHandler"));
return;
}
gSvcStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
gSvcStatus.dwServiceSpecificExitCode = 0;
WinService_o.ReportServiceStatus(SERVICE_START_PENDING, NO_ERROR, 3000);
WinService_o.PerformService(dwArgc, lpszArgv);
}
int main(int argc, char* argv[])
{
std::cout << "Hello!\n";
WinService WinService_o;
if (argc > 1)
{
if (strcmp(argv[1], "-install") == 0)
{
printf("Starting the installation process\n");
WinService_o.DeleteSvc();
WinService_o.SvcInstall();
return 1;
}
}
SERVICE_TABLE_ENTRY DispatchTable[] =
{
{ (LPWSTR)SVCNAME, (LPSERVICE_MAIN_FUNCTION)ServiceMain },
{ NULL, NULL }
};
if (!StartServiceCtrlDispatcherW(DispatchTable))
{
cout << "test";
WinService_o.SvcReportEvent( (LPTSTR) TEXT("StartServiceCtrlDispatcher"));
}
Но не удается запустить службу со следующей ошибкой. Я вижу ошибку по событию
StartServiceCtrlDispatcher не удалось с 1063
Может кто-нибудь помочь, пожалуйста?