2011-11-22 5 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 오류? 진심이야? –

+0

예? 정말 바보 같은 일이라면 제게 말해주세요. ( – Blub

+0

strdup 만 오류가 발생하면 메모리가 부족합니다. –

답변

0

좋아 싶은 생각이 내 나쁜, 내가 포인터의 주소를 전달해야합니다, 그렇지 않으면 그냥 값을 전달합니다. 이렇게 이렇게 :

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

strdup이 NULL을 반환하면 에만 오류가 있습니다.

나는 모든 사람이 위로 다음에 대한

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