在管道发明之前,UNIX 程序是如何相互交互的?

Min*_*nix 6 pipe historical-unix

我最近读到,在 UNIX 版本 3 之前没有出现管道的概念。

但是,由于 UNIX 总是关于简单的程序,它们只做一件事,然后组合起来做更复杂的事情:他们是如何在没有管道的情况下做到这一点的?

Nic*_*ckD 9

最初的 PDP-7 实现(大约 1969 年)中不存在 IO 重定向,但此后不久就添加了。有了这个,你可以实现一个管道的道德等价物:

prog1 | prog2
Run Code Online (Sandbox Code Playgroud)

可以用

prog1 > tempfile
prog2 < tempfile
rm tempfile
Run Code Online (Sandbox Code Playgroud)

事实上,管道经常使用这个模型来解释

强烈推荐 Ritchie 撰写的论文The Evolution of the Unix Time-sharing System用于早期 Unix 历史。它指出,“管道于 1972 年出现在 Unix 中”。