OSの基礎概念を学ぶための、最小限のUnixシェル実装。
- プロセスの生成と管理(fork, exec, wait)
- システムコールの理解
- ファイルディスクリプタとI/Oリダイレクション
- パイプとプロセス間通信
- シグナル処理
- プロジェクトの基本構造
- REPLループ(Read-Eval-Print Loop)
- コマンドのパース(トークン化)
- 単一コマンドの実行(fork + exec + wait)
- 出力リダイレクション(
>,>>) - 入力リダイレクション(
<) - ファイルディスクリプタ操作(
dup2)
- パイプ(
|)の実装 - 複数コマンドの連結
- Ctrl+C(SIGINT)
- バックグラウンド実行(
&)
-
cd,exit,export
make
./myshmysh> ls -la
mysh> echo Hello World
mysh> echo "test" > output.txt
mysh> cat < output.txt
mysh> ls >> log.txt
mysh> exitmy-shell/
├── main.c # メインのシェルプログラム
├── Makefile # ビルド設定
├── README.md # このファイル
├── LEARNING.md # 学習内容の詳細なまとめ
└── demos/ # 実験・デモプログラム
├── fork/ # fork関連の実験
├── fd/ # ファイルディスクリプタ/リダイレクト関連
├── buffer/ # バッファリング関連
└── pipe/ # パイプ関連
- LEARNING.md - 実装を通じて学んだOS概念の詳細まとめ
- プロセスモデル、fork/exec/wait
- ファイルディスクリプタ
- リダイレクションとパイプの仕組み
- 図解付きで理解しやすく整理
- demos/ - OS概念を実験・確認するためのプログラム集
fork/- プロセス複製の動作確認fd/- ファイルディスクリプタとdup2の実験buffer/- 標準出力のバッファリング確認pipe/- パイプのFIFO、ブロッキング、EOF確認
詳細は demos/README.md を参照