我可以为提升单元测试安装信号处理程序吗?
Can I install a signal handler for Boost unit tests?
我有很多Boost单元测试。我找不到应该放置信号处理程序的位置。单元测试目录中的文件中没有main()
函数。似乎main()
隐藏在某些宏中。
在unit_test.hpp
我看到:
namespace boost { namespace unit_test {
int BOOST_TEST_DECL unit_test_main( init_unit_test_func init_func, int argc, char* argv[] );
}
但是我如何实现自己的main()
函数,以便能够在那里设置信号处理程序?
按照此处的说明,您可以提供自己的main
函数来设置信号处理程序。以下是为此采用的一些代码:
#define BOOST_TEST_MODULE custom_main
#define BOOST_TEST_NO_MAIN
#define BOOST_TEST_ALTERNATIVE_INIT_API
#include <boost/test/included/unit_test.hpp>
#include <iostream>
#include <unistd.h>
#include <signal.h>
void signalHandler(int sig)
{
std::cerr << "Inside signal handler" << std::endl;
}
namespace utf = boost::unit_test;
BOOST_AUTO_TEST_CASE(test1)
{
BOOST_TEST(false);
}
int main(int argc, char* argv[], char* envp[])
{
signal(SIGINT, signalHandler);
signal(SIGTERM, signalHandler);
return utf::unit_test_main(init_unit_test, argc, argv);
}
相关文章:
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 有可能在信号处理程序中设置promise吗
- 在信号处理程序中捕获C++未处理的异常并恢复应用程序
- 通过安装信号处理程序关闭多线程应用程序
- 为什么我的信号处理程序只执行一次?
- GTK C++:找不到信号处理程序 您是否使用 -rdynamic 进行了编译?
- C++ 在信号处理程序后继续执行
- 没有信号处理程序的POSIX定时器的目的是什么?
- 为什么这个信号处理程序不能捕获 SIGHUP 或 SIGQUIT?
- 如何在C++中使用 std::bind 函数作为信号处理程序?
- 在 C++17 中,是否未定义使用无锁原子学保护从信号处理程序传递的数据?
- 如何将信号处理程序添加为方法
- 窗口上信号处理程序的异步安全写入函数
- 使用信号处理程序处理从 FIFO 接收的数据
- gtkmm/glade - 将信号处理程序连接到 MenuShell
- GTK+3 编译错误"找不到信号处理程序",您是否使用 -rdynamic 进行了编译?
- Linux 中的信号处理程序使用 sigaction (C++)
- 使用 enum 参数将 C++ 对象信号连接到 QML 信号处理程序
- 信号处理程序不要求使用dlopen或dlclose