Reading stdin in Windows 7

Jesse Phillips jessekphillips+D at gmail.com
Wed Aug 18 06:54:13 PDT 2010


Stanislav Blinov Wrote:

>   Hello,
> 
> I'm receiving strange results with reading stdin on Windows 7. Consider 
> this code:
> 
> module test;
> 
> import std.stdio;
> 
> void main(string[] args)
> {
>          foreach (int i, string line; lines(stdin))
>          {
>                  write(line);
>          }
> }
> 
> On Linux, if I do 'cat test.d | ./test' I get test.d contents on stdout. 
> But on Windows 7, ('type test.d | ./test.exe') the output is this:
> 
> std.stdio.StdioException: Bad file descriptor
> module test;
> 
> import std.stdio;
> 
> void main(string[] args)
> {
>          foreach (int i, string line; lines(stdin))
>          {
>                  writef(line);
>          }
> }
> 
> So I too get type.d contents on stdout, but preceeded by StdioException 
> string. This happens with dmd 2.047 and 2.048.
> 
> Is this my error, dmd's, or Windows's piping?
> -- 

In my experience Windows hasn't gotten piping right. And it has been known to have bugs, this might be related: http://stackoverflow.com/questions/466801/python-piping-on-windows-why-does-this-not-work


More information about the Digitalmars-d-learn mailing list