Sujet : Re: The joy of pipes
De : invalid (at) *nospam* invalid.invalid (Richard Kettlewell)
Groupes : comp.os.linux.miscDate : 17. Nov 2024, 09:42:12
Autres entêtes
Organisation : terraraq NNTP server
Message-ID : <wwvwmh2z1y3.fsf@LkoBDZeT.terraraq.uk>
References : 1 2 3 4 5 6 7 8 9 10 11
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
"
186282@ud0s4.net" <
186283@ud0s4.net> writes:
On 11/16/24 5:31 AM, Richard Kettlewell wrote:
Louis Krupp <lkrupp@invalid.pssw.com.invalid> writes:
But, really, they're just temp files the parent process can access.
>
Pipes *could* be implemented with temporary disk files, at least to an
extent, but as far as I can tell, they're not.
>
“Temporary files the parent can access” is not a good model for a
couple of reasons:
>
* The semantics are different. Bytes read from a regular file are
still there to be read again if you rewind the file; bytes read from
a pipe are gone. Empty/full files behave differently to empty/full
pipes.
>
* Temporary regular files can already be accessed by other processes
by name, by file descriptor inheritance, or file descriptor passing.
>
Didn't say temp disk files were necessarily SUPERIOR,
Indeed. You said they’re really the same, which they’re not.
just that they CAN do most of the stuff pipes are used for and in an
easier user/code-friendly fashion.
There’s certainly an overlap in the end goals you can meet with them,
but even within that overlap they’re used in slightly different ways.
SIZE is almost unlimited too.
Capacity is one of the ways in which they are very different, already
alluded to above.
Anyway, I'd made some TCP/UDP servers but the parent needed
to know the status of the children in a little more detail
than just a tiny return code - might want to terminate the
child if it'd been idle for awhile, might want to know how
much bandwidth was being used, might want to pick a good
time to do some maint routines, might want to know WHO the
connections were from. Pipes were the (relatively) easy
'C'-approved method and did the job very well.
I’ve no idea what you think “’C’-approved” means. C is a programming
language, not a set of guidelines. Pipes are an OS concept, not
appearing in the C language standard.
-- https://www.greenend.org.uk/rjk/