В моем текущем проекте. Я работаю над 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 и продолжает работу. Так что это не будет блокировать полный процесс.