为什么CTRL-D不能以单声道发送EOF?
看看下面的C#文件,我的问题的最简单可行的摄制:为什么CTRL-D不能以单声道发送EOF?
using System;
using System.IO;
public static class Test
{
public static void Main(string[] args)
{
string line;
while ((line = Console.In.ReadLine()) != null)
{
Console.Out.WriteLine(line);
}
}
}
当我建立这个下单并在控制台上运行它,一切正常,只是我无法发送EOF罚款。键入CTRL-D只是在命令行中输入一个奇怪的字符。我认为我在错误地检查EOF,但Console.In
是TextReader
,它没有EndOfFile
属性。我怎样才能解决这个问题?
哪个版本的mono?我在2009年3月16日的r129444中修复了这个问题...当我按下Ctrl-D时,程序按预期运行。
更新:不错。我发现2.4.xy版本没有这个修复:-(它将会在即将推出的2.6版本中...对不起。 更新2: mono-2-4在2009-03分支-13。我错过了3天!
CTRL-D是unix风格的文件结尾...因为Mono派生自Microsoft领域它可能使用CTRL-Z吗? (我没有安装Mono,所以我在黑暗中拍摄)。
Ctrl-D是EOT,Ctrl-Z是EOF。至少在sh和bash中用Ctrl-Z来停止在前台运行的进程... – Gonzalo 2009-11-12 04:42:48
嗯,我从来没有做过这样的区分...在每个操作系统上结束输入只是D(in * nix)或者Z(在DOS和Win中),这个链接似乎认为CTRL-D也是* nix中的EOF:http:// www.uwyo.edu/askit/displaydoc.asp?askitdocid=259&parentid=1 – Godeke 2009-11-12 05:18:23
这些是stty变量名称,而不是ASCII。对于处理文本的终端来说,考虑EOT == EOF并将其视为终点它的输入。 – Gonzalo 2009-11-13 21:58:17
我在v中看到这个问题ersion 2.4.2.3(tarball星期二10月6日15:35:40 MDT 2009),最近从mono-project.com下载 – 2009-11-12 04:50:04
是的,我刚刚注意到,当他尝试使用安装Mono的系统而不是从源代码构建(trunk )一个。 – Gonzalo 2009-11-12 04:53:54
我使用的是Ubuntu中的mono。 'mono --version'说1.9.1 ...在修复之前就已经完成了。该死。 – 2009-11-12 06:10:00