您好,我正在使用ZooKeeper的C绑定,当我调用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值。
我做错什么了吗?我的统计结构不会改变。我的buffer_len也没有。获取更新的stat struct后,我想使用s.datalength通过使用以下行来获取存储在znode中的完整数据:
char* newBuffer = malloc(s.datalength);
buffer_len = s.datalength;
zoo_get(zh, "/mypath",0, newBuffer, &buffer_len, NULL);