Re: off topic: combined output of concurrent processes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 04/14/2012 08:20 AM, Amadeus W.M. wrote:
If you really would like to get output in sequence, write to a pipe, and
have a reader process drain the pipe to a logfile.  It's pretty easy;
look at "mknod" with the 'p' option, or "mkfifo".  I'd still suggest
tagging each output line with an identifier and sequence number.

For the sake of the argument, assume I echo 500 As, 500 Bs and 500 Cs.

I don't care which process the output is coming from. It doesn't matter
which order the As, Bs and Cs are output. All I care about is that I
don't get 349As followed by 245Bs, etc. I want to see blocks of 500 each.

I don't see how echoing into a pipe would change the problem.
Theoretically, if several processes (e.g. echo) are running in the
background, e.g. on a round robin basis, then potentially I could see
random sequences of As, Bs and Cs. It doesn't seem to be the case in
practice though. So which is it?

This has to do with the operating system internals, it's not a trivial
question.

Actually it is semi-non-trivial. :-)

Unix/Linux makes the following guarantee ...

Multiple processes that open the same file for writing each maintain their own file positions, so they may overwrite the output of another process, unless the processes all open the file with the "O_APPEND" option. With the "O_APPEND" option, the system guarantees that the entire data from a single write by a process will be written to the end of the file as a indivisible block and will not be mixed with the output from another process. Without "O_APPEND", data from multiple processes may be intermixed in any order, or may seem to "disappear" (is overwritten by other data).

Of course, if you didn't write the code that is doing the output, you'll have to examine the source to see if it uses the "O_APPEND" open option. This may be non-trivial.

Regards,

John

--
users mailing list
users@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe or change subscription options:
https://admin.fedoraproject.org/mailman/listinfo/users
Guidelines: http://fedoraproject.org/wiki/Mailing_list_guidelines
Have a question? Ask away: http://ask.fedoraproject.org


[Index of Archives]     [Older Fedora Users]     [Fedora Announce]     [Fedora Package Announce]     [EPEL Announce]     [EPEL Devel]     [Fedora Magazine]     [Fedora Summer Coding]     [Fedora Laptop]     [Fedora Cloud]     [Fedora Advisory Board]     [Fedora Education]     [Fedora Security]     [Fedora Scitech]     [Fedora Robotics]     [Fedora Infrastructure]     [Fedora Websites]     [Anaconda Devel]     [Fedora Devel Java]     [Fedora Desktop]     [Fedora Fonts]     [Fedora Marketing]     [Fedora Management Tools]     [Fedora Mentors]     [Fedora Package Review]     [Fedora R Devel]     [Fedora PHP Devel]     [Kickstart]     [Fedora Music]     [Fedora Packaging]     [Fedora SELinux]     [Fedora Legal]     [Fedora Kernel]     [Fedora OCaml]     [Coolkey]     [Virtualization Tools]     [ET Management Tools]     [Yum Users]     [Yosemite News]     [Gnome Users]     [KDE Users]     [Fedora Art]     [Fedora Docs]     [Fedora Sparc]     [Libvirt Users]     [Fedora ARM]

  Powered by Linux