linux c/c++ 编程 telnet 连接 io 重定向

标签 linux redirect io telnet

我有一台计算机(例如计算机 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)

但是这并不能解决问题。任何帮助将不胜感激。

最佳答案

我可能是错的,但您需要重定向标准输出(如果 kermit 通信是双向的,则可能需要重定向标准输入)。另外,我有点好奇mPort是什么,管道?你会读它并写它吗?通常,您有两个文件描述符,一个用于读取,一个用于写入。

关于linux c/c++ 编程 telnet 连接 io 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/440175/

相关文章:

linux - 在运行 fedora 11 的嵌入式系统中存储序列号的位置

linux - 如何使用 vlan id 标记传出流量

c++ - 解决方案范围在 Visual Studio 中定义?

regex - htaccess 重定向 + 隐藏 url 中的子文件夹

c - 从标准输入读入文件*

java - 使用 writeUnshared() 序列化期间创建的对象数量

linux - 在 bash 脚本中添加数字表示 "not found"

c - C 中的匿名管道与 execlp

javascript - 使用 JavaScript 在提交时重定向表单插件

java.io.文件名过滤器