On Tue, Jan 20, 2004 at 11:32:38PM EST, David Champion wrote:
> * On 2004.01.20, in <20040121041846.GG26679@xxxxxxx>,
> * "David Yitzchak Cohen" <lists+mutt_users@xxxxxxxxxxxxxx> wrote:
> > BTW - For a file less than 4096 bytes long, you can do this instead:
> > cat < file | filter | cat > file
> > as long as filter doesn't attempt to flush its output. (The pipe buffers
> > hold all the intermediate data.)
> >
> > For files of arbitrary length, you can replace the UNIX pipe buffer with
> > a small little program:
> > filter <file | read_everything_into_memory_and_spit_back_everything_on_eof
> > >file
>
> Kids, don't try this at home. This depends totally on the shell in
> use, not on cat or r_e_i_m_a_s_b_e_o_e.
What's that?
> Every shell I've tried this
> sort of thing in implements pipelines in a certain unixy way: i.e.,
> output streams must be opened before programs are executed, and the last
> stage of a a pipeline executes before the first. (Pipelines execute
> right-to-left.)
That's interesting ... I use plain old bash, and have done the above
successfully ... weird. . .
> This means that pretty much every shell is going to
> overwrite your input file before anyone gets to read it. If anything
> else happens, it's a scheduler fluke, and certainly not reliable.
That's really interesting. I use the standard Linux scheduling algorithm,
nothing special. The only remotely "interesting" feature of my system is
that it's got two CPUs, but most of the "fun stuff" I encounter happens
in multithreaded apps only.
Here, let's have some fun:
$ for blah in `seq 1 1000` ; do echo blah > temp.ttt ; cat < temp.ttt | sed
's/blah/goo/' | cat | cat | cat > temp.ttt ; cat temp.ttt ; rm -f temp.ttt ;
done | wc -l
862
For some reason, having only two cat(1)s doesn't do the trick nearly
as often, but you'll notice that with three cat(1)s, we get the filter
executed "in-place" more than 85% of the time - not too bad, eh?
- Dave
--
Uncle Cosmo, why do they call this a word processor?
It's simple, Skyler. You've seen what food processors do to food, right?
Please visit this link:
http://rotter.net/israel
Attachment:
pgpCYrLT0BRPV.pgp
Description: PGP signature