Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
April 01, 2013 Flush to stdio? | ||||
---|---|---|---|---|
| ||||
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 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dleaner Attachments:
| 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 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
On 4/1/13, Iain Buclaw <ibuclaw@ubuntu.com> wrote:
> You mean stdout.flush() ?
Don't forget seat.putDown() too!
|
April 01, 2013 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | 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 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
Attachments:
| 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 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
Posted in reply to DLearner Attachments:
| 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 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Dleaner | You can also try to call setvbuf on stdio with _IONBF mode to set it to non-buffering mode. |
April 01, 2013 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kagamin | oops, stdout. int zero=setvbuf(stdout,null,_IONBF,0); assert(zero==0); or stdio.setvbuf(0,_IONBF); |
April 02, 2013 Re: Flush to stdio? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Iain Buclaw | 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.
|
Copyright © 1999-2021 by the D Language Foundation