見出し画像

⌨️msdosやcygwinにおける偽パイプのしくみ

パイプの概念はDouglas McIlroyマキルロイ


McIlroyは(ある日、自分の)コマンドシェルの多くの時間が、あるプログラムから別のプログラムへの入力として出力ファイルを渡している(だけな)ことに気づいた。。。。

実装したのはケントンプソン

1973年のことでUnix バージョン 3での事らしい。

パイプは、M. Doug McIlroyによって最初に提案されました。McIlroyは1950年代後半からマクロに取り組んでおり、一連の離散的なコマンドに代わるより効率的な方法として、マクロをつなぎ合わせることを常に提唱していました。マクロとは、特定のコマンドが入力されたり、キーが押されたりしたときに自動的に実行される一連のコマンド(またはキーボードやマウスの動作)のことです。

McIlroy の粘り強さは、1969 年にベル研究所でオリジナルの UNIX を開発した Ken Thompson につながり、1973 年に彼のオペレーティングシステムの一部をパイプを含むように書き換えました。このパイプの実装は、それ自体が非常に便利だっただけでなく、Unix の哲学の中心的な部分を可能にしました。

偽のパイプというのもあるそうで、これはcygwin使ったりすると感じるやつだな

マイクロソフトのMS-DOSオペレーティングシステムでは、Unixライクなオペレーティングシステムのパイプに似た表記が使われています。しかし、実装方法は全く異なります。MS-DOSで使用されているパイプのようなメカニズムは偽のパイプと呼ばれることがあります。それは、2つ以上のプログラムを同時に実行し、出力データを1つから次のプログラムに連続的に流すのではなく、MS-DOSは一時的なバッファファイル(すなわち、メモリのセクション)を使用しています。

偽のパイプの図、バッファに言っていたまったらリダイレクト先の標準出力に情報を流す。cygwinとかでのモッサリ感の元凶


これは、Unix のパイプの概念よりも、ファイルを介したリダイレクトに近いものです。2 番目のプログラムは 1 番目のプログラムが完了するまで開始できないため、より多くの時間がかかり、また、より多くのシステムリソース (すなわち、メモリとプロセッサ時間) を消費します。この方法は、最初のコマンドが非常に大量の出力を生成したり、終了しなかったりする場合に特に不利になる可能性があります。

実際に使ってみて、どんな使いごごちかまずはみてみることにする。

マキロイ登場

PowerShellでも解決してないみたいだ

ウェブでのパイプがapiマッシュアップやxmlになるはずだったがそうはならないのは、マキルロイがいないから?


お願い致します