我正在尝试检查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部分并退出。 奇怪的是,如果我在mydb中运行它而myserver没有运行,它会像我期望的那样进入我的退出分支。
我对Boost UTF有点新意。我正在通过动态链接这样做。 有什么想法吗?
乔恩
答案 0 :(得分:1)
据我所知,pidof -s 'proc_name'
如果proc_name
未运行则返回0,否则返回PID。由于system
应返回被调用进程的retval,因此您实际上是在测试进程是否正在运行:rc != 0
,而rc == 0
测试进程是否未运行。不确定问题是否与Boost细节有关。