Я использую библиотеку 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), все будет работать гладко.
Спасибо