Project

General

Profile

Actions

Bug #10781

closed

stdout flushing and loops

Added by sneakin (Nolan Eakins) over 10 years ago. Updated over 10 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:67794]

Description

I'm making a little program that has a shell like command prompt. Something like:

$ cmd
Cmd out
$ more
More out
$

I tried the following code, but the second prompt does not get flushed to my terminal after entering an initial command:

begin
  $stdout.write("$ ")
  $stdout.flush
 
  $stdout.puts($stdin.gets.inspect)
end until $stdin.closed? || $stdin.eof?

My output looks like:

$ input
"input\n"
more
$ "more\n"

But if I write my code like the following, my prompt works but I can't wrap my prompter in a method:

  $stdout.print('$ ')
  $stdout.flush
 
  begin
    $stdout.puts($stdin.gets.inspect)
    $stdout.print('$ ')
    $stdout.flush
  end until $stdin.closed? || $stdin.eof?
end

What exactly is the problem here? I've tried a 1.8 and 1.9.3p547.

Actions

Also available in: Atom PDF

Like0
Like0Like0