Здравствуйте, я работаю в привязке C для ZooKeeper, и когда я вызываю функции zoo_exists () или zoo_get (), параметр stat должен обновляться в соответствии с документацией. Однако, когда я запускаю свой код:
create("/mypath", "testnode");
//this creates a znode /mypath with data stored being "testnode".
char* buffer= malloc(1);
int buffer_len=1;
struct Stat s;
zoo_get(zh, "/mypath", 0, buffer, &buffer_len, &s);
В документации указано:
\ param buffer_len - размер буфера, на который указывает параметр buffer. После возврата будет установлена фактическая длина данных. Если данные NULL, длина равна -1.
\ param stat, если не NULL, будет содержать значение stat для пути при возврате.
Я что-то не так делаю? моя stat struct s не меняется. Также как и мой buffer_len. После получения обновленной структуры stat я хочу использовать s.datalength, чтобы получить полные данные, хранящиеся в znode, используя строку:
char* newBuffer = malloc(s.datalength);
buffer_len = s.datalength;
zoo_get(zh, "/mypath",0, newBuffer, &buffer_len, NULL);