我一直在尝试使用Apple的COPYFILE库(用C语言编写)来制作我正在制作的程序(用C ++编写)。我已经完成了大部分工作,但我无法弄清楚如何获得字节数。来自documentation:
COPYFILE_STATE_COPIED
获取到目前为止复制的数据字节数。 (仅对copyfile_state_get()有效;有关回调的更多详细信息,请参阅下文。)dst参数是指向off_t的指针(类型为off_t *)。
copyfile_state_get()的用法如下(来自相同的文档):
copyfile_state_get(copyfile_state_t state, uint32_t flag, void * dst);
我目前的代码看起来像这样:
// Main function:
off_t* currentBytes = 0;
copyfile_state_t state = copyfile_state_alloc();
copyfile_flags_t flags = COPYFILE_RECURSIVE | COPYFILE_DATA;
copyfile(//SOURCE, //DESTINATION, state, flags);
// Somewhere in the callback function:
cout << copyfile_state_get(state, COPYFILE_STATE_COPIED, currentBytes);
复制部分工作正常(文件被复制),但从回调函数输出的所有内容都是0x0
。我尝试过使用指向off_t
指针的指针,确实给我一个实际地址(?),例如0x10335ad5c8
,但我可以&似乎没有比这更进一步了。我对指针和地址并不是很熟悉,所以也许我错过了一些东西,但我希望有人能指出我正确的方向。
答案 0 :(得分:2)
您似乎应该使用这样的内容传递off_t
的地址,以便copyfile_state_get(...)
可以填写该值。
同样正如文件所述;
All of the other functions return 0 on success, and less than 0 on error.
您可能希望打印currentBytes而不是返回值。
off_t currentBytes = 0; // Space for an actual off_t
...
// Somewhere in the callback function
copyfile_state_get(state, COPYFILE_STATE_COPIED, ¤tBytes);
cout << currentBytes;