Как узнать, не удалось ли установить соединение SSH?

Я должен запустить ssh Команда в отдельном процессе (так с помощью execlp) для подключения работающей машины к другой машине в той же локальной сети. Дело в том, что я должен установить, что введенное имя хоста действительно, поэтому ssh соединение успешно.

Поскольку, execlp заменяет образ вызывающего процесса при успешном выполнении команды (что будет иметь место с ssh), насколько нам известно, в процессе вызова нет способа узнать, является ли ssh соединение было успешно установлено.

Следовательно, единственное решение этого неудобного поведения, которое я могу придумать, состоит в том, чтобы утверждать, что заданное имя хоста машины, к которой нужно подключиться, является действительным. Как я могу / должен об этом?

(Действительное имя хоста - это просто имя, которое существует и, конечно, достижимо, будь то IP-адрес или псевдоним)

1 ответ

Для того, чтобы сэкономить все настройки труб, я использую popen() бежать ssh, Так что да, если нет другого пути, мне, возможно, придется пойти по менее ленивому пути.... waitpid()...

Вам не нужно идти по менее ленивому пути. man popen:

pclose() Функция ожидает завершения связанного процесса и возвращает статус завершения команды, возвращенной wait4(2).

Другие вопросы по тегам