以下のようにブロッキングサブスクリプションを実行すると、プログラムが停止しますredisGetReply
(ソース:hiredis#pipelining)
void subscribe (std::string& key, Subscriber* subscriber)
{
void* reply = redisCommand (redis, "SUBSCRIBE %s", key.c_str ());
freeReplyObject (reply);
while (redisGetReply (redis, &reply) == REDIS_OK)
{
subscriber -> notify ();
freeReplyObject (reply);
}
}
redisFree
で述べたように、(シグナル処理を介して)ソケットを呼び出すと、ソケットが閉じられてredisGetReply
返されると思いましたが、代わりにメモリアクセス違反がスローされます。