Bir durumu koruyan bir (C#) konsol uygulamasına sahibim. Durum, uygulamayı konsol üzerinden çeşitli girişlerle besleyerek değiştirilebilir. Uygulamayı bir miktar giriş ile besleyebilmem gerekiyor, daha sonra çıktıyı durulayıp tekrarlayın.Tekrarlı Girdi Girişi 'Standart Girdi' Standart Giriş
Yeni bir işlem oluşturuyorum ve girişi/çıkışı yeniden yönlendirmenin normal çalışmasını yapıyorum. Sorun, girdiyi gönderdikten ve standart çıktıda ReadLine()
'u aradıktan sonra, girdi girdisine artık yazamadığım standart girişte Close()
'u aramadan önce bir değer döndürmemesidir.
Hala çıkış alırken giriş akışını nasıl açabilirim?
var process = new Process
{
StartInfo =
{
FileName =
@"blabal.exe",
RedirectStandardInput = true,
RedirectStandardError = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
ErrorDialog = false
}
};
process.EnableRaisingEvents = false;
process.Start();
var standardInput = process.StandardInput;
standardInput.AutoFlush = true;
var standardOutput = process.StandardOutput;
var standardError = process.StandardError;
standardInput.Write("ready");
standardInput.Close(); // <-- output doesn't arrive before after this line
var outputData = standardOutput.ReadLine();
process.Close();
process.Dispose();
IO'yu yönlendirdiğim konsol uygulaması çok basittir. Console.Read()
kullanarak konsoldan okur ve Console.Write()
kullanarak yazar. Bu verilerin okunabilir olduğundan emin olduğumdan, standart çıktı/girdi (.NET'te yazılmayan) kullanarak okuyan başka bir uygulama var.
Noway! Tanrım, haklısın. \ R \ n ile hazırlanmamış bir şey yazmam gerekirse ne yapmalıyım? Tek bir '\ n' ile linux stilini tercih etmek gibi. –
@Qua: Use 'Environment.NewLine' yerine,' Unix olmayan platformlar için "\ r \ n" içeren bir dize veya Unix platformları için "\ n" içeren bir dize [msdn] (http: // msdn.microsoft.com/en-us/library/system.environment.newline.aspx). –
WriteLine otomatik olarak Enviroment.Newline'ı kullanır mı? –