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
@JaxWR : libssh2_session_last_errno (세션)를 반환하는 대상은 무엇입니까? – TOC
@JaxWR : 코드없이 더 많은 문제 해결을 할 수 없습니다! – TOC