私はコンピュータ (たとえばコンピュータ A) を持っていますが、コンピュータ A が特定の telnet ポート経由で接続を取得すると、プログラムが起動されます。
コンピューター A 上のこのプログラムは、ログイン、認証などを処理します。実行できるジョブの 1 つは、ファイルの受信です。gKermit を起動することでこれを処理します。
/usr/local/bin/gkermit -e 8000 -w -a /location/x/ -ir
コンピューター B に 2 つ目のプログラムがあります。この 2 つ目のプログラムはコンピューター 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)
ただし、これはうまくいきません。どんな助けでも大歓迎です。