代码之家  ›  专栏  ›  技术社区  ›  Tree77

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

  •  0
  • Tree77  · 技术社区  · 17 年前

    计算机上的这个程序处理登录、身份验证等。它可以做的工作之一就是接收文件。它通过启动gKermit来处理这个问题。

    /usr/local/bin/gkermit -e 8000 -w -a /location/x/ -ir

    mPid = forkpty(&mPort, buffer, &mCurrTermattr, NULL);
    ...
    if child
    {
        execl("/usr/bin/telnet", "telnet", mComPort.name.c_str(), NULL);
    }

    问题是,当计算机B启动gKermit发送文件时,它无法与计算机a gKermit通信。

    system(gkermit -d gkermit.txt -X -e 8000 -i -s testfile.txt)

    有人会认为,如果我们使用mPort,我们可以通过执行以下操作重定向计算机B系统调用stdio以使用该mPort:

    dup2(mPort, STDIN_FILENO)

    然而,这并没有达到目的。任何帮助都将不胜感激。

    2 回复  |  直到 17 年前
        1
  •  0
  •   jpalecek    17 年前

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

        2
  •  0
  •   Tree77    17 年前

    感谢您的回复,jpalecek,

    似乎加上:

    dup2(mPort, STDOUT_FILENO)

    现在允许gKermint双向通信。这当然有道理。啊

    推荐文章