我正在尝试在 Boost UTF 全局 fixture 中检查正在运行的服务器进程。 我正在通过在我的 fixture 构造函数中调用系统来执行此操作...
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 有点陌生。我正在使用动态链接执行此操作。 有什么想法吗?
乔恩
最佳答案
据我所知,如果 proc_name
未运行,则 pidof -s 'proc_name'
返回 0,否则返回 PID。由于 system
应该返回被调用进程的 retval,您实际上是在测试进程是否正在运行:rc != 0
,而 rc == 0
测试进程是否未运行。不确定问题是否与 Boost 细节有关。
关于c++ - 在全局 fixture 中使用系统 boost UTF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11342776/