strdup错误:'正在进行中的操作'

时间:2011-11-22 14:47:22

标签: c redis strdup

错误是什么意思?我只需要从redis命令返回我得到的值。

int getReply(char* result)
{
   redisContext *c;
   redisReply *reply;

   c = redisConnect((char*)"127.0.0.2", 6379);
   reply = redisCommand(c,"GET %s", "somekey");
   if (reply->str != NULL)
   {
       result = strdup(reply->str); 
       strerror(errno); // <-------- 'Operation now in progress'. result = null
   }

   freeReplyObject(reply);

   reply = redisCommand(c, "QUIT");
   printf("Disconnecting redis: %s\n", reply->str);

   freeReplyObject(reply);

   return 0;  
}

即使我使用调试器慢慢地执行它,也会发生这种情况(人们会认为任何阻塞操作都已经完成了)。 Redis特定的错误字符串为空,reply-&gt; str具有我想要的正确字符串。

2 个答案:

答案 0 :(得分:1)

strdup返回NULL时出现 错误。

我想你想要

       result = strdup(reply->str); 
       if (!result) strerror(errno);

答案 1 :(得分:0)

好的,对于每个人都在跟进:这是我的坏事,我需要传入一个指针的地址,否则它只会传入值。所以这样做:

int getReply(char** result)
{
  *result = "yes";
}