如下所示运行阻止订阅会停止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
,如hiredis#cleaning-up所述,而是抛出内存访问冲突。
答案 0 :(得分:0)
好的,没关系。我设法通过调用...
简单地关闭hiredis正在使用的文件描述符close (redis -> fd);
... redisGetReply
正确返回。
或者,可以发送QUIT
命令并返回阻止订阅。