Stdio.write/writeln and flushing

Somebody via Digitalmars-d digitalmars-d at puremagic.com
Fri Sep 9 07:03:51 PDT 2016


On Thursday, 8 September 2016 at 13:22:10 UTC, Steven 
Schveighoffer wrote:
>
> write and writeln depend on the behavior of FILE * for 
> flushing, there is no specific flush.
>
> Note that FILE * examines the file descriptor and if it is 
> detected as an interactive descriptor, flush is done every 
> newline. If not, then flush is only done when the buffer is 
> full. This is standard behavior forever, and is done to avoid 
> performance problems when piping the result of a command to a 
> file, for instance (flushing is expensive).
>
> Your emacs "console" is not marked by the OS as interactive (or 
> however it's detected by FILE *, implementation defined), 
> therefore flush does not happen on newlines.
>
> If you want to force newline flushing, use 
> http://dlang.org/phobos/std_stdio.html#.File.setvbuf with a 
> mode parameter of _IOLBF.
>
> -Steve

Ah, good to know an alternative way, I thought just about 
redefining write(...) and writeln(...) locally. Thanks.

I guess the real answer still is to configure OS/Emacs, as 
apparent when I did dub.init with Emacs.




More information about the Digitalmars-d mailing list