我可以使用 libssh2_scp_send()
將文件從一端成功發送到另一端。但是,當我嘗試使用 libssh2_scp_recv()
接收文件時,它不會使用數據填充參數struct stat
。文件大小始終返回「0」。libssh2_scp_recv未填充struct stat
struct stat file_info;
LIBSSH2_CHANNEL *channel = libssh2_scp_recv(session, source_file, &file_info);
printf("file_info.st_size = %lu.\n", file_info.st_size);
在file_info
任何其他領域都空過,即使channel
不爲NULL。
我會被正確打開,適用於任何其他SSH操作 (正在運行的遠程系統管理命令,發送文件...)
我使用「libssh2-1.3.0」。
請問有什麼線索嗎?
真的很感謝。
編輯:
我改變了第三行:
fprintf(stderr, "** file_info { st_size = %lu; st_atime = %lu }. SSH last error = %d",
file_info.st_size, file_info.st_atime,
libssh2_session_last_errno(info->session));
,其結果是:
** file_info { st_size = 0; st_atime = 0 }. SSH last error = 0`.
就是這樣。返回的頻道是有效的,我可以從中讀取。 libssh2_session_last_errno()
沒有錯誤,但st_size
仍然爲空。
這將允許我更精確的診斷,但不能解釋爲什麼'st_size == 0'即使知道文件存在並且有數據。如果我試圖讀取文件,直到沒有更多的字節,我可以正確讀取它。 – JaxWR 2012-08-01 21:29:33
@JaxWR:什麼返回這個libssh2_session_last_errno(會話)? – TOC 2012-08-01 21:46:00
@JaxWR:沒有代碼,我們無法做更多的故障排除! – TOC 2012-08-01 22:26:35