Thread overview
Flush to stdio?
Apr 01, 2013
Dleaner
Apr 01, 2013
Iain Buclaw
Apr 01, 2013
DLearner
Apr 01, 2013
Iain Buclaw
Apr 02, 2013
DLearner
Apr 01, 2013
Andrej Mitrovic
Apr 01, 2013
Iain Buclaw
Apr 01, 2013
Kagamin
Apr 01, 2013
Kagamin
April 01, 2013
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.
April 01, 2013
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';


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

Don't forget seat.putDown() too!
April 01, 2013
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'
April 01, 2013
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';


April 01, 2013
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';


April 01, 2013
You can also try to call setvbuf on stdio with _IONBF mode to set it to non-buffering mode.
April 01, 2013
oops, stdout.
int zero=setvbuf(stdout,null,_IONBF,0);
assert(zero==0);

or

stdio.setvbuf(0,_IONBF);
April 02, 2013
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.