Почему CTRL-D не отправляет EOF в моно? - PullRequest
2 голосов
/ 12 ноября 2009

Возьмите следующий файл C #, самое простое повторение моей проблемы:

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. Как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 12 ноября 2009

Какая версия моно? Я исправил эту проблему в r129444 в 2009-03-16 ... Ваша программа работает должным образом при нажатии Ctrl-D.

Обновление: Приятно. Я обнаружил, что версии 2.4.x.y не имеют исправления :-(. Это будет в следующей версии 2.6 ... Извините. Обновление 2: mono-2-4 был разветвлен 2009-03-13. Я пропустил это на 3 дня!

1 голос
/ 12 ноября 2009

CTRL-D - это конец файла в стиле Unix ... поскольку Mono является производным от области Microsoft, возможно, он использует CTRL-Z? (У меня не установлен Mono, поэтому я делаю снимок в темноте).

...