0

我在每日构建中运行一个 Visual C++ 控制台测试程序。测试时不时会调用一些被其他开发人员不当更改的函数,陷入无限循环并挂起,从而阻塞构建。

我需要一个尽可能简单的看门狗解决方案。这就是我想出的。在测试程序入口点,我启动了一个单独的线程,该线程连续循环并检查经过的时间。如果超过了某个预定义的时间,它会调用 TerminateProcess()。伪代码:

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

这个解决方案是否比作为单独的主程序实现的看门狗更糟糕?

4

1 回答 1

1

我认为最好将看门狗作为一个单独的进程来实现。重用它更容易,更容易检测您的应用程序是否崩溃并获取其返回码。

于 2010-01-02T06:01:49.593 回答