新年なので Shell の pipe と redirection を実装した。 前回の記事はこちら nonylene.hatenablog.jp 前回実装してみて、さすがに pipe と redirection ぐらいは実装しておいてもいいのでは?と思って実装してみた。 pipe github.com パイプについての説明は パイプでつなぐ - PukiWiki が分かりやすくて、ここを見ると大体いい感じに実装できた。 一つ困ったのは、試しに $ ls | ls とした時に ls: write error: Broken pipe が確率的に発生していた。試しに C で同じような実装をすると特に発生せず、速度の問題かと思って C で sleep しても再現しなくて困っていた(まあこんなコマンド打つことないけど…)。 結局原因は Python がデフォルトでは SIGPIPE を無視すること