我正在为名为 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() 内部。
有没有办法使用信号处理来中断阻塞调用?或者有没有其他方法可以解决这个问题?