WEB开发网
开发学院软件开发C++ 用信号处理函数处理ctrl+C和段错误 阅读

用信号处理函数处理ctrl+C和段错误

 2012-11-07 14:52:31 来源:WEB开发网   
核心提示: 在使用C语言测试工具 unity测试驱动开发 dust的通信模块时,可能遇到人为中断测试或段错误,用信号处理函数处理ctrl+C和段错误,此时需要加载清理函数,以完成关闭socketFd等操作,在其前加入信号处理函数,从而达到遇到中断时自动加载清理函数并退出的功能,但unity的tearDown()函数仅在每个测试用

 在使用C语言测试工具 unity测试驱动开发 dust的通信模块时,可能遇到人为中断测试或段错误,此时需要加载清理函数,以完成关闭socketFd等操作,但unity的tearDown()函数仅在每个测试用例结束后才加载,因此找到unity/src/unity.c的UnityBegin(),在其前加入信号处理函数,从而达到遇到中断时自动加载清理函数并退出的功能。
当然,需要在unity/src/unity.h中增加下列两个头文件的支持:
13 #include "signal.h"
14 #include "stdlib.h"

//add by bbdlg
void procSigInt(void)
{
printf("recv SIGINT or SIGSEGV\n");
tearDown();
UnityEnd();
exit(1);
}

//-----------------------------------------------
void UnityBegin(void)
 {
//add by bbdlg
signal(SIGINT, procSigInt);
signal(SIGSEGV, procSigInt);

Unity.NumberOfTests = 0;
Unity.TestFailures = 0;
Unity.TestIgnores = 0;
Unity.CurrentTestFailed = 0;
Unity.CurrentTestIgnored = 0;
 }

Tags:信号处理 函数 处理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接