[英]copyfile_state_get always showing 0
我一直在嘗試使用Apple的COPYFILE庫(用C語言編寫)來創建我正在制作的程序(用C ++編寫)。 我已經完成了大部分工作,但我無法弄清楚如何獲得字節數。 從文檔 :
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
,但是我似乎無法再進一步了。 我對指針和地址並不是很熟悉,所以也許我錯過了一些東西,但我希望有人可以指出我正確的方向。
看起來你應該使用這樣的東西來傳遞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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.