Exception d编程语言:标准输入问题还是误解?
下面是一个简单的程序,它从stdin读取行并将它们输出到stdoutException 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 程序
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将您的评论转化为答案,我会将其标记为解决方案:谢谢!