【发布时间】:2012-07-25 08:04:53
【问题描述】:
我正在为名为 pkg_getclient() 的函数编写一个测试单元。
基本上,它是一个为客户端无限监听的函数。
这是实现:http://slexy.org/view/s21RBuOUOu(粘贴在那里以保持问题文本大小合理)
这是一个客户端 - 服务器测试的示例:http://slexy.org/view/s2fS5hBkgI
这是我的单元测试的当前状态:
int test_pkg_getclient (char* portname) {
int netfd;
struct pkg_conn *result;
netfd = pkg_permserver(portname, "tcp", 0, 0);
/* validate_port(port); */
printf("TESTING PKG_GETCLIENT...\n");
result = pkg_getclient(netfd,callbacks, NULL, 0);
printf("TESTING VALID FILE DESCRIPTOR\n");
if (result == PKC_ERROR) {printf ("\t[ FAILED ]\n");
} else { printf ("\t[ PASSED ]\n");
}
return 0;
}
int main (int argc, char* argv[]) {
test_pkg_getclient(argv[1]);
printf("%d",argc);
return 0;
}
我需要中断 pkg_getclient() 阻塞调用。 它还需要移植到 Windows,而不仅仅是基于 unix 的系统。 我无法修改 pkg_getclient() 函数。阻塞函数在里面 getclient()。
有没有办法使用信号处理来中断阻塞调用? 或者有没有其他办法解决这个问题?
【问题讨论】:
标签: c unit-testing sockets portability signal-handling