Как дать время ожидания API-интерфейсам SSH_SCP (libs sh) в C ++ - PullRequest
2 голосов
/ 26 апреля 2020

В моем текущем проекте. Я работаю над API ssh_scp (точнее, ssh_scp_push_file, ssh_scp_write, ssh_scp_push_directory API). Вот фрагмент кода для этого.

rc = ssh_scp_push_file(scp, file_name, size, S_IRUSR | S_IWUSR);
if (rc != SSH_OK) {
    fprintf(stderr, "Can't open remote file: %s\n", ssh_get_error(session));
    return rc;
}

rc = ssh_scp_write(scp, memblock, size);
if (rc != SSH_OK) {
    fprintf(stderr, "Can't write to remote file: %s\n", ssh_get_error(session));
    return rc;
}

Когда я прерываю связь scp на моем Ubuntu 18.04 с помощью команды

$ sudo iptables -I INPUT -s [ip_address] -j DROP

Процесс полностью останавливается для неизвестный период времени. Блокировка завершена. И никогда не возобновляйте процесс.

Итак, я хочу спросить, есть ли способ установить время ожидания, чтобы, если я не получил ответ от сервера ssh_scp, он подождал некоторое время и, on timeout возвращает некоторое значение SSH_ERROR и продолжает работу. Так что это не будет блокировать полный процесс.

...