Path: ...!news.roellig-ltd.de!news.mb-net.net!open-news-network.org!news.gegeweb.eu!gegeweb.org!nntp.terraraq.uk!.POSTED.tunnel.sfere.anjou.terraraq.org.uk!not-for-mail From: Richard Kettlewell Newsgroups: comp.os.linux.misc Subject: Re: The joy of pipes Date: Sun, 17 Nov 2024 08:42:12 +0000 Organization: terraraq NNTP server Message-ID: References: <20241112111426.00007245@gmail.com> <20241114160907.0000252b@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: innmantic.terraraq.uk; posting-host="tunnel.sfere.anjou.terraraq.org.uk:172.17.207.6"; logging-data="145058"; mail-complaints-to="usenet@innmantic.terraraq.uk" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux) Cancel-Lock: sha1:h6f1rOpROt9RwOPgRyPplu6LJp0= X-Face: h[Hh-7npe<v9!1Z&W?r\c.!4DXH5PWpga"ha +r0NzP?vnz:e/knOY)PI- X-Boydie: NO Bytes: 3598 Lines: 49 "186282@ud0s4.net" <186283@ud0s4.net> writes: > On 11/16/24 5:31 AM, Richard Kettlewell wrote: >> Louis Krupp 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/