2011-11-22 50 views
-1

錯誤是什麼意思?我只需要返回從redis命令獲得的值。strdup錯誤:'正在進行操作'

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-> str有我想要的正確字符串。

+0

strdup錯誤?你是認真的嗎? – 2011-11-22 14:48:39

+0

是嗎?如果它真的很愚蠢,我正在做,請告訴我:( – Blub

+0

只有strdup可以返回的錯誤是內存不足。 –

回答

0

好了大家對這個跟進:這是我的不好,我需要一個指針的地址通過,否則將只是傳遞中的值。所以這樣做:

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

有錯誤只有strdup返回NULL。

我想你想

 result = strdup(reply->str); 
     if (!result) strerror(errno); 
相關問題