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() ブロッキング呼び出しを解除する必要があります。UNIX ベースのシステムだけでなく、Windows にも移植できる必要があります。pkg_getclient() 関数を変更できません。ブロッキング関数はgetclient()内にあります。
シグナル処理を使用してブロッキング呼び出しを中断する方法はありますか? または、これを回避する他の方法はありますか?