لماذا لا ترسل CTRL-D EOF في أحادي؟
سؤال
خذ ملف 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
خاصية. كيف يمكنني اصلاح هذا؟
المحلول
أي إصدار من أحادي؟ أنا إصلاح هذه المشكلة في R129444. في 2009-03-16 ... برنامجك يعمل كما هو متوقع عندما أضغط على CTRL-D.
تحديث: لطيف - جيد. اكتشفت أن الإصدارات 2.4.xy لا تملك الإصلاح :-(. سيكون في الإصدار 2.6 القادم ... آسف على ذلك.تحديث 2: تم تفرج Mono-2-4 في 2009-03-13. اشتقت ذلك قبل 3 أيام!
نصائح أخرى
CTRL-D هو نهاية ملف نمط UNIX من الملفات ... لأن أحادية مستمدة من Microsoft Realm هل ربما استخدام Ctrl-Z؟ (ليس لدي تثبيت مونو، لذلك أنا آخذ طلقة في الظلام هنا).