Exception d编程语言:标准输入问题还是误解?

Exception d编程语言:标准输入问题还是误解?,exception,d,stdin,dmd,Exception,D,Stdin,Dmd,下面是一个简单的程序,它从stdin读取行并将它们输出到stdout module test; import std.stdio; void main(string[] args) { foreach (int i, string line; lines(stdin)) { writeln(line ~ " (test)"); } } 我正在使用WindowsDMD编译器v2.052 如果我这样做:type file.txt | test.exe 程序

下面是一个简单的程序,它从stdin读取行并将它们输出到stdout

module test;

import std.stdio; 

void main(string[] args) 
{

    foreach (int i, string line; lines(stdin)) {
        writeln(line ~ " (test)");
    }
}
我正在使用WindowsDMD编译器v2.052

如果我这样做:
type file.txt | test.exe

程序会在file.txt的每一行追加“test”一词,并将其输出到控制台

但是,最后我不断地得到一个错误:

std.stdio。StdioException@std\stdio.d(2138):错误的文件描述符

也许我错过了什么?
这让我发疯!:)

我不熟悉type命令,可能在文件完成时它没有发送EOF。在Linux中,您只需执行以下操作:./test 这是输入重定向。与管道不同,管道将程序输出转换为标准输入,这将文件转换为程序的标准输入。还有输出重定向,它获取程序的输出并将其存储在文件中


./test>output.txt

这是一个长期存在的错误:


您尝试的操作肯定适用于非Windows操作系统,也应该适用于Windows。我认为这是C I/O函数的Digital Mars实现中的一个bug,它被
std.stdio
包装。我以前尝试过修复此错误,但从未成功确定其根本原因。

我不熟悉type命令,可能在文件完成时它没有发送EOF。在Linux中,您只需执行以下操作:./testtest.exe将您的评论转化为答案,我会将其标记为解决方案:谢谢!