私はC
とlinux
を使って組み込みシステムに取り組んでいます。ユーザーはSSHまたはコンソールシリアルケーブル経由でデバイスに接続できます。彼はPuTTYまたはTera Termを通してこれを行うことができます。私の質問は、彼が接続された後、どのように私は彼のウィンドウの幅を知ることができますか?私はLinuxのPC上で自分のシステムをシミュレートする場合、彼らは仕事、異なるアプローチを試してみましたが、それらのどれもが、デバイス上で動作しません:ターミナルウィンドウの幅を取得するには?
ioctl()
struct winsize ws; ioctl(..., TIOCGWINSZ, &ws);
この方法は、PC上で動作しますが、それデバイス上で常に0を返します。
tgetnum()
setupterm((char *)0, 1, (int *)0); CGR_INT columns = tgetnum("co");
この方法は、PC上で動作しますが、それは常にデバイス上で80x24を返します。
getmaxyx()
CGR_INT xdim; CGR_INT ydim; initscr(); refresh(); getmaxyx(stdscr, ydim, xdim);
この方法は、PC上で動作しますが、それは常に
こんにちは、ヨルゲンセン、ご返信ありがとうございます。あなたはこの数字についてもっと説明できますか?device-ttySドライバ - ttyS0 devnode - screen/minicom xterm - pty devnode - ptyドライバ - pts devnode - bash?私はかなり理解していない。たとえば、 "pty devnode"とは何ですか? – martial
別のことは、私の問題の解決策はドライバを変更することです?どのドライバー? – martial
あなたの説明によると、SSHとシリアルコンソールの動作は異なるでしょう。異なるドライバが関与しているからです。シリアルコンソールの場合は、SSHの場合、それは何か(何ですか?)です。私は正しい? – martial