用信号处理函数处理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; }
- ››处理报错:java/lang/NoClassDefFoundError: java...
- ››函数式编程(javascirpt)
- ››函数式JavaScript编程指南
- ››处理反馈问题时的一点想法
- ››处理SQL Server表的数据插入到错误列中
- ››处理SSIS 2008中的变更数据捕获
- ››处理器发展分析:超过16个内核毫无意义
- ››处理word长文档-使用主控文档
- ››处理Oracle中的不可见字符
- ››处理Asp.net Ajax框架12029,12007错误
- ››函数调用,__stdcall,__cdecl,__fastcall,thiscall...
- ››函数指针与软件设计
赞助商链接