Closed5
100日チャレンジ day48 (Pty Terminal)

昨日
100日チャレンジに感化されたので、アレンジして自分でもやってみます。
やりたいこと
- 世の中のさまざまなドメインの簡易実装をつくり、バックエンドの実装に慣れる(dbスキーマ設計や、関数の分割、使いやすいインターフェイスの切り方に慣れる
- 設計力(これはシステムのオーバービューを先に自分で作ってaiに依頼できるようにする
- 生成aiをつかったバイブコーティングになれる
- 実際にやったことはzennのスクラップにまとめ、成果はzennのブログにまとめる(アプリ自体の公開は必須ではないかコードはgithubにおく)
できたもの

今日は ターミナル を作る

擬似端末(pseudo terminal、略してpty)とは、**ソフトウェア的に実現された端末(ターミナル)**のことです。
物理的な端末(キーボードやディスプレイがついた本物の端末)ではなく、OS内部で仮想的に作られる端末のペアです。
仕組み(ざっくり)
- ptyは「マスター」と「スレーブ」という2つのファイル(デバイス)で構成されます。
- マスター側: プログラム(例: ターミナルエミュレータ)が操作する側
- スレーブ側: シェルや他のプログラムが「本物の端末」として認識する側
何のために使う?
- ターミナルエミュレータ(例: GNOME Terminal, iTerm2, VSCodeのターミナル)や、ssh、screen、tmuxなどがptyを使っています。
- 例えば、ターミナルアプリはptyのマスター側を操作し、スレーブ側にシェル(bashやzshなど)を接続します。
- これにより、シェルは「本物の端末で動いている」と思い込むので、入出力や制御シーケンス(カーソル移動、色付けなど)が正しく動作します。
例
- あなたが
ssh
でリモートに接続するとき、リモート側でptyが作られ、シェルがそのスレーブ側で動きます。 - ターミナルアプリで新しいタブを開くと、ptyが作られ、そのスレーブ側でシェルが起動します。
まとめ
- 擬似端末(pty)=仮想的な端末デバイスのペア
- ターミナルエミュレータやリモート接続、画面分割ツールなどで必須の仕組み
- シェルやプログラムに「本物の端末」を見せかけるために使う
もしさらに詳しい技術的な仕組みや、Goでの使い方など知りたい場合は教えてください!
このスクラップは3ヶ月前にクローズされました