プログラムは、それが制御すると、ウォッチドッグは、同じプロセスに組み込まれて

StackOverflow https://stackoverflow.com/questions/1951854

質問

私は毎日ビルド内部の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