go-pipe - 課題
プロジェクト概要
go-pipe は、UNIX パイプを使用したプロセス間通信とコマンドのパイプライン実行を実装する課題です。pipex に相当する Go 版として、プロセス管理とファイルディスクリプタの操作を学びます。
提出ファイル
go-pipe/
├── go.mod
├── main.go # メインエントリーポイント
├── pipe.go # パイプ実装
├── exec.go # コマンド実行
└── pipe_test.go # テスト
マンダトリー要件
プログラムの動作
# 基本形式
./go-pipe file1 cmd1 cmd2 file2
# シェルの以下と等価
< file1 cmd1 | cmd2 > file2
実装する機能
- 入力リダイレクト: 入力ファイルからの読み込み
- 出力リダイレクト: 出力ファイルへの書き込み
- パイプ接続: コマンド間のパイプ
- コマンド実行: 外部コマンドの実行
使用例
# cat で読み込み、grep でフィルタ
./go-pipe input.txt "cat" "grep hello" output.txt
# wc で行数カウント
./go-pipe input.txt "cat -e" "wc -l" output.txt
ボーナス要件
禁止事項
os/exec.Command().Output() の使用禁止(パイプを自分で作る)