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

Red*_*ger 8 stdin d exception dmd

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

module test;

import std.stdio; 

void main(string[] args) 
{

    foreach (int i, string line; lines(stdin)) {
        writeln(line ~ " (test)");
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用Windows DMD编译器v2.052.

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

程序将"test"一词附加到file.txt的每一行,并将它们输出到控制台.

但是我最后得到一个错误:

std.stdio.StdioException@std\stdio.d(2138): Bad file descriptor

也许我错过了什么?它让我疯狂!:)

dsi*_*cha 6

这是一个长期存在的错误:http://d.puremagic.com/issues/show_bug.cgi?id = 3425

您尝试做的事情肯定适用于非Windows操作系统,也应该适用于Windows.我认为这是CI/O函数的数字火星实现中的一个错误,它正在被包装std.stdio.我之前尝试过修复此错误,但从未成功确定其根本原因.


he_*_*eat 4

我不熟悉 type 命令,也许文件完成后它没有发送 EOF。在 Linux 中你只需执行: ./test < file.txt

这就是输入重定向。与将程序输出转换为标准输入的管道不同,这将文件转换为程序的标准输入。还有输出重定向,它获取程序的输出并将其存储在文件中。

./测试 > 输出.txt