У меня есть компьютер (скажем, компьютер A), когда компьютер A подключается через определенный порт telnet, он запускает программу.
эта программа на компьютере A обрабатывает вход в систему, аутентификацию и т. Д. Одно из заданий, которые она может выполнять, - получать файлы. Это обрабатывает это, запуская gKermit.
/usr/local/bin/gkermit -e 8000 -w -a /location/x/ -ir
У меня есть вторая программа на компьютере B. Эта вторая программа подключится к компьютеру A
mPid = forkpty(&mPort, buffer, &mCurrTermattr, NULL);
...
if child
{
execl("/usr/bin/telnet", "telnet", mComPort.name.c_str(), NULL);
}
теперь родительский процесс программы может использовать дескриптор файла mPort для отправки полученных данных. (например, как войти в компьютер А и сказать ему, чтобы он получил файл)
Проблема в том, что когда компьютер B запускает gKermit для отправки файла, он не может связаться с компьютером A gKermit.
system(gkermit -d gkermit.txt -X -e 8000 -i -s testfile.txt)
Можно подумать, что если мы говорим с помощью mPort, мы могли бы перенаправить системный вызов компьютера B на stdio, чтобы использовать этот mPort, выполнив:
dup2(mPort, STDIN_FILENO)
однако это не сработает. Любая помощь будет оценена.