Я хочу, чтобы выполнить следующую команду из моей программы C:Запуск команды множественной SSH с помощью execl
SSH -t -t [email protected] «экспорт LINES = 40; экспорт COLUMNS = 124; экспорт TERM = Xterm, $ SHELL -i»0 < T_IN 1> t_out
Если я использую системный вызов, как в:
system("ssh -t -t [email protected] \"export LINES=40;export COLUMNS=124;export TERM=xterm;$SHELL -i\" 0<t_in 1>t_out");
, который работает отлично. Но мне нужно получить PID процесса SSH, поэтому мне нужно использовать execlp.
То, что я пытался до сих пор:
pid = fork();
if(pid == 0) {
fd_in = open("td_in", O_RDWR | O_NONBLOCK);
dup2(fd_in, 0);
close(fd_in);
fd_out = open("td_out", O_RDWR | O_NONBLOCK);
dup2(fd_out, 1);
close(fd_out);
execlp("ssh", "ssh", "-t", "-t", "[email protected]", "\"export LINES=40;export COLUMNS=124;export TERM=xterm;$SHELL -i\"", 0);
} else {
// not important here
}
При выполнении этого он идет к SSH логин и после введения пароля я получаю ошибку:
Баш: экспорт LINES = 40; экспорт COLUMNS = 124; export TERM = xterm;/bin/bash -i: Нет такого файла или каталога. Подключение к 192.168.3.21 закрыто.
T_IN и t_out некоторые ФИФО (в названные трубы)
Мой вопрос: что должно быть правильно вызов функций имеют выполнить вышеуказанную команду. Thanks
Правильно, я уже нашел это. Я хотел ответить, но мне пришлось ждать 8 часов. благодаря –