flipper has asked for the wisdom of the Perl Monks concerning the following question:
I was expecting to see every line printed twice (once by each process, as they don't share a file pointer), or at a push, every line printed once-ish, (if they do).perl -e ' open X, "</etc/passwd"; fork(); while (readline(X)){ print "$$: $_"; sleep 1 } print "$$: all done\n" '
Can someone explain what is going on please? At the start of the while loop I would expect the two processes to be identical, bar the return value of fork...8488: root:x:0:0:root:/root:/bin/bash 8489: all done 8488: daemon:x:1:1:daemon:/usr/sbin:/bin/sh 8488: bin:x:2:2:bin:/bin:/bin/sh 8488: <rest of the file> 8488: all done
$ perl -v This is perl 5, version 14, subversion 2 (v5.14.2) built for x86_64-li +nux-gnu-thread-multi (with 89 registered patches, see perl -V for more detail)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: confusing fork/readline behaviour
by afoken (Chancellor) on Aug 13, 2015 at 17:49 UTC | |
by flipper (Beadle) on Aug 13, 2015 at 18:52 UTC | |
by afoken (Chancellor) on Aug 14, 2015 at 18:22 UTC | |
|
Re: confusing fork/readline behaviour
by KurtSchwind (Chaplain) on Aug 13, 2015 at 18:19 UTC | |
|
Re: confusing fork/readline behaviour
by anonymized user 468275 (Curate) on Aug 14, 2015 at 11:39 UTC | |
by tye (Sage) on Aug 14, 2015 at 14:18 UTC | |
by anonymized user 468275 (Curate) on Aug 14, 2015 at 18:55 UTC | |
by roboticus (Chancellor) on Aug 14, 2015 at 14:29 UTC | |
by anonymized user 468275 (Curate) on Aug 14, 2015 at 19:01 UTC |