libssh2 sftp: неблокирующий API - неопределенное поведение, когда API возвращает LIBSSH2_ERROR_EAGAIN
Я использую библиотеку libssh2 для моего приложения C++ под Linux. При использовании неблокирующего API, могут ли функции библиотеки SFTP управлять внутренними запросами, ожидающими пользователя?
Например:
LIBSSH2_SFTP_HANDLE *pSftpHandle = libssh2_sftp_open(m_pSftpSession,
FILENAME1,
LIBSSH2_FXF_WRITE|
LIBSSH2_FXF_CREAT|
LIBSSH2_FXF_TRUNC,
LIBSSH2_SFTP_S_IRUSR|
LIBSSH2_SFTP_S_IWUSR|
LIBSSH2_SFTP_S_IRGRP|
LIBSSH2_SFTP_S_IROTH);
if (libssh2_session_last_errno(m_pSshSession) == LIBSSH2_ERROR_EAGAIN)
{
pSftpHandle = libssh2_sftp_open(m_pSftpSession,FILENAME2,
LIBSSH2_FXF_WRITE|
LIBSSH2_FXF_CREAT|
LIBSSH2_FXF_TRUNC,
LIBSSH2_SFTP_S_IRUSR|
LIBSSH2_SFTP_S_IWUSR|
LIBSSH2_SFTP_S_IRGRP|
LIBSSH2_SFTP_S_IROTH);
}
В приведенном выше примере нужно ли ждать, пока libssh2_sftp_open() вернется с успехом / неудачей для FILENAME1, прежде чем вызывать его снова с FILENAME2? Причина, по которой я спрашиваю, заключается в том, что я испытываю неопределенное поведение при выполнении вышеизложенного. Если я подожду, пока libssh2_sftp_open() закончит обработку FILENAME1 (не возвращается с LIBSSH2_ERROR_EAGAIN), все будет работать гладко.
Спасибо