如何创建始终在线的过程?
How to create always on process?
情况:我们有一个备份服务器,HDD空间可能会在5分钟内填满。
我想做什么?我正在尝试创建一个监控系统,该系统将每 2 到 3 分钟监控一次空间,如果可用空间小于 X GB,则会发送邮件。
问题:开发这样一个系统的最佳方法是什么?我的 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 processn");
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
有人可以帮忙吗?
当你把它标记为Windows服务时,你回答了你自己的问题:
Windows 服务是由服务控制管理器在基于 Windows NT 的操作系统上运行的后台服务进程,类似于守护程序或 UNIX 服务。
将应用编写为服务。即使没有用户登录,服务也在后台运行,并且可以设置为使用操作系统自动启动。您所要求的正是服务非常适合的情况。
有关更多详细信息和完整的 C/C++ 示例,请参阅 MSDN 上的服务和服务程序。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 在线编译器中的分段C++没有打印消息
- 是否删除在对象构造过程中创建的对象
- 如何在鼠标挂钩过程中检测拖动
- 此测试()中发生了什么意外过程?为什么总是覆盖 ch[0 1 2..]?
- clang 插件:在编译过程中修改 AST
- 在线程之间拆分任务总是值得的吗?
- 如何使变量从 x 到 y,然后从 y 返回到 x 并始终重复该过程
- join() 失败,如果在线程内部调用 io_context.run()
- 在C++中调用 MS SQL 存储过程
- 阻塞信号会导致升压过程不起作用
- 如何在C++中在线组装?
- 在线程中读取无符号整数时,c++ 位是否以原子方式切换?
- Adafruit 羽毛RFM69HCW在使用过程中会冻结,需要硬重置
- 使用提升过程获取 shell 命令的标准输出
- 附加到 gdb 会中断并且不会继续该过程
- 如何创建始终在线的过程?
- 在类构造函数中将此指针传递给CreateThread在线程过程中的行为很奇怪
- 我不应该在线程过程中使用 _endthreadex() 进行堆栈展开吗?
- 编译在在线 HTML 表单上提交的代码并使用 GCC 进行处理的过程