Сам SSH обеспечивает средство сообщения, он ничего не знает о каталогах. Так как можно определить, какую удаленную команду выполниться (это - по умолчанию - оболочка), я запустил бы там.
Вы можете только longjmp ()
вернуть вверх стек вызовов. При вызове longjmp (b_buf, 1)
что-то начинает идти не так, потому что кадр стека, на который ссылается b_buf
, больше не существует после longjmp (a_buf)
.
Из документации для longjmp
:
Подпрограммы longjmp () не могут быть вызваны после возврата из подпрограммы, которая вызвала процедуры setjmp ().
Это включает «возврат» через a longjmp ()
вне функции.
Стандарт говорит об этом longjmp ()
(7.13.2.1 Функция longjmp):
Функция longjmp восстанавливает среду, сохраненную при последнем вызове макрос setjmp в том же вызове программы с соответствующим jmp_buf аргумент. Если такого вызова не было или функция, содержащая вызов макроса setjmp завершил выполнение в промежуточный период
с помощью сноски, которая немного поясняет это:
Например, выполняя оператор return или потому что другой вызов longjmp вызвал переход к вызову setjmp в функции ранее в наборе вложенных вызовов.
Таким образом, вы не можете longjmp ()
назад и вперед по вложенным setjmp
/ longjmp
наборы.