<div dir="ltr">I don't think files as pipes would be "transparent to the user." Reading an empty pipe causes a wait until the bytes requested are available, unless the pipe is closed first. Reading to the end of a file results in an end-of-file error. This problem is avoided if the source process completes before the target process begins, but then there is a different lack of transparency, which is that the processes don't run simultaneously. (I think this is the case with the implementation that Heinz showed.)<div><br></div><div>Still, the same sort of pseudo-pipes were in MS-DOS, and they were occasionally useful.<br><div><br></div><div>Marc</div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Dec 5, 2024 at 9:17 AM Heinz Lycklama <<a href="mailto:heinz@osta.com">heinz@osta.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>
<div>
John, thanks for the reminder of the implementation<br>
of pipes on a constrained version of UNIX in the early<br>
days. The exact implementation is described on page 2095<br>
of the BSTJ July-Aug 1978 for interested parties.<br>
<br>
<img src="cid:ii_19397c287d52aa7ca5d1" alt="" width="700" height="196"><br>
<br>
Heinz<br>
<br>
<div>On 12/5/2024 8:00 AM, John R Levine
wrote:<br>
</div>
<blockquote type="cite">On Thu,
5 Dec 2024, Dan Cross wrote:
<br>
<blockquote type="cite">
<blockquote type="cite">Pipes were invented at least three times
I'm aware of, but what made them
<br>
work so well in Unix is that they looked to the program the
same as a file
<br>
so any program could use them for input or output without
special arrangements,
<br>
and the shell made it easy to start two programs and pipe them
together.
<br>
</blockquote>
<br>
Once you have coroutines and queues for passing data between
them, a
<br>
lot of things start to look like pipes.
<br>
</blockquote>
<br>
They also can look a lot like temporary files. Someone, probably
Heinz, did a shell for the tiny Unix that ran on floppies so this
<br>
<br>
foo | bar
<br>
<br>
actually did this
<br>
<br>
foo > tmpfile ; bar < tmpfile; rm tmpfile
<br>
<br>
to avoid having to swap programs in and out on floppies. The main
disadvantage was that the tmpfile could overflow the tiny disks of
the time.
<br>
<br>
<blockquote type="cite">
<blockquote type="cite">They were invented again at IBM in the
1970s and described in this paper. I wrote
<br>
them a letter, which they published, saying that Unix pipes
did the same thing.
<br>
<br>
<a href="https://dl.acm.org/doi/10.1147/sj.174.0383" target="_blank">https://dl.acm.org/doi/10.1147/sj.174.0383</a>
<br>
</blockquote>
<br>
Don't forget CMS pipelines, too!
<br>
<br>
Sadly, the Morrison paper cited above is not easily accessible,
though
<br>
</blockquote>
<br>
If anyone else needs a copy, just ask.
<br>
<br>
Regards,
<br>
John Levine, <a href="mailto:johnl@taugh.com" target="_blank">johnl@taugh.com</a>, Taughannock Networks, Trumansburg NY
<br>
Please consider the environment before reading this e-mail.
<a href="https://jl.ly" target="_blank">https://jl.ly</a>
<br>
</blockquote>
<br>
</div>
</blockquote></div><div><br clear="all"></div><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><i>My new email address is <a href="mailto:mrochkind@gmail.com" target="_blank">mrochkind@gmail.com</a></i></div></div></div>