我有一台计算机(比如计算机 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来发送接收数据了。(即像登录计算机 A,并告诉它接收文件)
问题是当计算机 B 启动 gKermit 发送文件时,它无法与计算机 A gKermit 通信。
system(gkermit -d gkermit.txt -X -e 8000 -i -s testfile.txt)
有人会认为,如果我们正在使用 mPort 进行交谈,我们可以通过执行以下操作重定向计算机 B 系统调用 stdio 以使用该 mPort:
dup2(mPort, STDIN_FILENO)
然而这并不能解决问题。任何帮助,将不胜感激。