0

gnome-terminal xterm などのように、Linux で新しい pty セッションを作成したいと考えています。タスクの半分は機能しており、openpty で pty セッションを作成し、プロセスを fork() で処理し、子はスレーブ FD を使用し、残りのプロセス ターミナルはネットワーク ソケットに接続しています。

ネットワーク経由で「リモート端末」に接続できますが、正しく動作しません。エコーはなく、Enter キーを押しても文字は送信されません (そのため、nano、mc などでナビゲートできません)。

termios 構造体は でセットアップされcfmakeraw(struct termios)ます。

質問: gnome-terminal などのデフォルト セッションでのデフォルトの termios 設定は何ですか。

4

2 に答える 2

2

に引数NULLとして渡します(または、これを調べる必要があります!)。結果のデフォルトは、対話型端末にとって適切なはずです。struct termios *openpty()forkpty()

于 2013-05-28T03:53:14.037 に答える
0

tcgetattr()標準入力、標準出力、または標準エラーが端末に送られ、正常であれば、 andを使用して端末から pty に設定をコピーできますtcsetattr()

struct termios ttyset;

if (tcgetattr(FILE_STDERR, &ttyset) != 0)
    ...handle error - maybe try stdout or stdin...
if (tcsetattr(pty_fd, TCSANOW, &ttyset) != 0)
    ...handle error...

基本的に、これは、最初に端末設定の適切なセットがあり、その設定をコピーするFILE_STDERRことpty_fdを前提としています (これは、疑似 tty のスレーブ側のファイル記述子であると想定されます)。

もちろん、上記のコード フラグメントでは隣接する操作として示されていますが、疑似 tty を初期化するために使用する前に、設定をかなりの時間キャプチャすることができます。

于 2013-05-28T04:35:38.003 に答える