www.digitalmars.com         C & C++   DMDScript  

D.gnu - Flush to stdio?

reply "Dleaner" <bm.email01 gmail.com> writes:
I was using writef("escape string" ~ "Display string") to try to 
simulate a console, but noticed that the writes are only flushed 
when a newline is present.

Is there a 'flush' function that works with stdio?
'flush()' seems unkown to the compiler, and 'fflush()' seems to 
be for files, not for writing to the screen.
Apr 01 2013
next sibling parent reply Iain Buclaw <ibuclaw ubuntu.com> writes:
On 1 April 2013 19:13, Dleaner <bm.email01 gmail.com> wrote:

 I was using writef("escape string" ~ "Display string") to try to simulate
 a console, but noticed that the writes are only flushed when a newline is
 present.

 Is there a 'flush' function that works with stdio?
 'flush()' seems unkown to the compiler, and 'fflush()' seems to be for
 files, not for writing to the screen.

You mean stdout.flush() ? -- Iain Buclaw *(p < e ? p++ : p) = (c & 0x0f) + '0';
Apr 01 2013
parent reply "DLearner" <bm.email01 gmail.com> writes:
On Monday, 1 April 2013 at 18:36:52 UTC, Iain Buclaw wrote:
 On 1 April 2013 19:13, Dleaner <bm.email01 gmail.com> wrote:

 I was using writef("escape string" ~ "Display string") to try 
 to simulate
 a console, but noticed that the writes are only flushed when a 
 newline is
 present.

 Is there a 'flush' function that works with stdio?
 'flush()' seems unkown to the compiler, and 'fflush()' seems 
 to be for
 files, not for writing to the screen.

You mean stdout.flush() ?

Tried your idea, error message was: "No property 'flush' for type '_iobuf'
Apr 01 2013
parent reply Iain Buclaw <ibuclaw ubuntu.com> writes:
On 1 April 2013 19:49, DLearner <bm.email01 gmail.com> wrote:

 On Monday, 1 April 2013 at 18:36:52 UTC, Iain Buclaw wrote:

 On 1 April 2013 19:13, Dleaner <bm.email01 gmail.com> wrote:

  I was using writef("escape string" ~ "Display string") to try to simulate
 a console, but noticed that the writes are only flushed when a newline is
 present.

 Is there a 'flush' function that works with stdio?
 'flush()' seems unkown to the compiler, and 'fflush()' seems to be for
 files, not for writing to the screen.

You mean stdout.flush() ?

Tried your idea, error message was: "No property 'flush' for type '_iobuf'

stdout should be a struct File if you imported std.stdio; As if looks like the C stdout is taking precedence, you can either force the use of it via std.stdio.stdout.flush() , or call fflush(stdout). Regards -- Iain Buclaw *(p < e ? p++ : p) = (c & 0x0f) + '0';
Apr 01 2013
parent "DLearner" <bmqazwsx123 gmail.com> writes:
On Monday, 1 April 2013 at 19:07:55 UTC, Iain Buclaw wrote:
 On 1 April 2013 19:49, DLearner <bm.email01 gmail.com> wrote:

 On Monday, 1 April 2013 at 18:36:52 UTC, Iain Buclaw wrote:

 On 1 April 2013 19:13, Dleaner <bm.email01 gmail.com> wrote:

  I was using writef("escape string" ~ "Display string") to 
 try to simulate
 a console, but noticed that the writes are only flushed when 
 a newline is
 present.

 Is there a 'flush' function that works with stdio?
 'flush()' seems unkown to the compiler, and 'fflush()' seems 
 to be for
 files, not for writing to the screen.

You mean stdout.flush() ?

Tried your idea, error message was: "No property 'flush' for type '_iobuf'

stdout should be a struct File if you imported std.stdio; As if looks like the C stdout is taking precedence, you can either force the use of it via std.stdio.stdout.flush() , or call fflush(stdout). Regards

Your suggestion of: fflush(stdout); worked. Thank you.
Apr 02 2013
prev sibling next sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
On 4/1/13, Iain Buclaw <ibuclaw ubuntu.com> wrote:
 You mean stdout.flush() ?

Don't forget seat.putDown() too!
Apr 01 2013
prev sibling next sibling parent Iain Buclaw <ibuclaw ubuntu.com> writes:
On 1 April 2013 19:45, Andrej Mitrovic <andrej.mitrovich gmail.com> wrote:

 On 4/1/13, Iain Buclaw <ibuclaw ubuntu.com> wrote:
 You mean stdout.flush() ?

Don't forget seat.putDown() too!

Oh, and also forgot about hands.wash(). -- Iain Buclaw *(p < e ? p++ : p) = (c & 0x0f) + '0';
Apr 01 2013
prev sibling parent reply "Kagamin" <spam here.lot> writes:
You can also try to call setvbuf on stdio with _IONBF mode to set 
it to non-buffering mode.
Apr 01 2013
parent "Kagamin" <spam here.lot> writes:
oops, stdout.
int zero=setvbuf(stdout,null,_IONBF,0);
assert(zero==0);

or

stdio.setvbuf(0,_IONBF);
Apr 01 2013