Professional Web Applications Themes

buffering question: interleaved output from child processes - Ruby

The following code, when connected to the terminal's stdio, interleaves the outputs in time-order. When I pipe the stdout or redirect to a file, all the "B" outputs are grouped at the top (in time order), followed by the "A" outputs. I assume this is due to buffering in the child processes. What can I do to make the piped/redirected output behave like terminal output? $ ruby -v ruby 1.9.0 (2004-01-08) [i686-linux] ---- $stdout.sync START_TIME = Time.now.to_f fork do srand 1 10.times do sleep rand puts "A: #{Time.now.to_f - START_TIME}" end end fork do srand 2 10.times do sleep rand ...

  1. #1

    Default buffering question: interleaved output from child processes

    The following code, when connected to the terminal's stdio, interleaves
    the outputs in time-order.

    When I pipe the stdout or redirect to a file, all the "B" outputs are
    grouped at the top (in time order), followed by the "A" outputs.

    I assume this is due to buffering in the child processes. What can I do
    to make the piped/redirected output behave like terminal output?

    $ ruby -v
    ruby 1.9.0 (2004-01-08) [i686-linux]

    ----

    $stdout.sync

    START_TIME = Time.now.to_f

    fork do
    srand 1
    10.times do
    sleep rand
    puts "A: #{Time.now.to_f - START_TIME}"
    end
    end

    fork do
    srand 2
    10.times do
    sleep rand
    puts "B: #{Time.now.to_f - START_TIME}"
    end
    end

    Process.wait
    Process.wait


    Joel Guest

  2. #2

    Default Re: buffering question: interleaved output from child processes


    "Joel VanderWerf" wrote:

    [...] 

    That's a no-op :-)


    daz



    daz Guest

  3. #3

    Default Re: buffering question: interleaved output from child processes

    Hi,

    At Sat, 14 Feb 2004 17:18:07 +0900,
    Joel VanderWerf wrote in [ruby-talk:92863]: 

    $stdout.sync = true

    --
    Nobu Nakada


    nobu.nokada@softhome.net Guest

  4. #4

    Default Re: buffering question: interleaved output from child processes

    daz wrote: 
    >
    >
    > That's a no-op :-)[/ref]

    Ok. No more posting after midnight for me! :)

    Thanks to both of you.


    Joel Guest

Similar Threads

  1. Replies: 3
    Last Post: December 10th, 08:29 PM
  2. Replies: 31
    Last Post: December 9th, 11:06 PM
  3. HTML output buffering
    By Robin in forum PHP Development
    Replies: 4
    Last Post: October 16th, 08:08 PM
  4. Replies: 0
    Last Post: August 20th, 01:39 AM
  5. child processes
    By Vikas Vijay in forum UNIX Programming
    Replies: 2
    Last Post: July 24th, 09:22 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139