1

Boost UTF グローバル フィクスチャで実行中のサーバー プロセスを確認しようとしています。私はこのように私のフィクスチャコンストラクタでシステムへの呼び出しでこれをやっています...

class MyTestFixture
{
public: 
    MyTestFixture(); 
    ~MyTestFixture() ;

};


MyTestFixture::MyTestFixture()
{

    int rc = system("pidof myserver > /dev/null");
    if ( rc != 0 )
    {
        cout << "myserver not running so cannot continue" << endl;
        fflush (stdout) ;
        sleep(10);
        exit(4) ;
    }

    cout << "fixture setup ok!" << endl ;
}

BOOST_GLOBAL_FIXTURE( MyTestFixture );


BOOST_AUTO_TEST_CASE( pgmiia_main_test1 )
{
// some test code...
}

「myserver」が正常に実行されている場合はすべて問題ありませんが、そうでない場合はクラッシュします。ifセクションに入って終了しません。奇妙なことに、myserver が実行されていない状態で gdb で実行すると、期待どおりに出口ブランチに入ります。

私はBoost UTFに少し慣れていません。私はダイナミックリンクでこれをやっています。何か案は?

ジョン

4

1 に答える 1

1

私が覚えている限り、が実行されていないpidof -s 'proc_name'場合は 0 を返し、それ以外のproc_name場合は PID を返します。呼び出されたプロセスの retval を返す必要があるためsystem、プロセスが実行されているかどうかを実際にテストしています: rc != 0、プロセスが実行rc == 0されていないかどうかをテストします。問題がブーストの仕様に何らかの形で関連しているかどうかは不明です。

于 2012-07-05T11:58:26.273 に答える