我运行日常构建内部一个Visual C ++控制台测试程序。每一个现在,则测试将调用,是由其他开发人员不当改变了一些功能,陷入无限循环,并挂从而阻断构建。

我需要一个看门狗溶液尽可能简单。以下是我想出了。在测试程序的入口点,我开始一个单独的线程循环时间可持续和检查经过的时间。如果超过了一些预定义的时期,它调用了TerminateProcess()。伪代码:

DWORD WatchDog( LPVOID)
{
     DWORD start = GetTickCount();
     while( true ) {
        Sleep( ReasonablePeriod );
        if( GetTickCount() - start > MaxAllowed ) {
            TerminateProcess( GetCurrentProcess(), 0 );
        }
     }
     return 0;
}

这是溶液不是作为单独的主程序实现的监视程序的任何差?

有帮助吗?

解决方案

我认为这是优选的实施看门狗作为一个单独的过程。它更容易重新使用它,它更容易发现,如果你的应用程序崩溃,并获得它的返回码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top