Yerel win32 API'sini kullanarak bir Windows uygulaması yazdım. Uygulamam diğer işlemleri başlatacak ve çıkışı yakalayacak ve stderr çıktısını kırmızıyla vurgulayacaktır. Bunu gerçekleştirmek için,Stdout/stderr'i ayrı olarak yakalayabilir ve asıl düzeni koruyabilir miyim?
I stdout ve standart hataya için ayrı bir boru yaratmak ve CreateProcess çağrı zaman STARTUPINFO yapısında kullanın. Sonra, her bir stdout/stderr tutamacı için borudan okuyan ve çıktıyı bir pencereye kaydeden ayrı bir iş parçacığı başlatırım. Bu, çoğu durumda iyi çalışır. Sorun şu ki, alt işlem hızlı bir şekilde stderr ve stdout için günlüğe kaydediyorsa, uygulamanız bazen çıkışı yanlış sırayla gösterecektir. Bunun, her tanıtıcıdan okumak için iki iş parçacığı kullanmasından kaynaklandığını farz ediyorum.
o ikisi arasında ayrım yapmak mümkün olurken, onlar için yazılmış orijinal sırayla stdout ve stderr'yi yakalamak mümkün mü?
Evet, bu yaklaşımdır ama olarak çok fazla aşağı oy açık forumlarda bunu çalışmakla kaçınılmaz sonucudur op söyleyecek kadar cesur değildi. –
Bu nasıl olabilir? CMD.exe her zaman doğru nasıl görünüyor? yapıldığını ancak CAN gibi – paulm
görünüyor onun için yazıldığı akışı bilmek mümkün değildir: http://stackoverflow.com/questions/18529662/capture-process-stdout-and-stderr-in-the-correct-ordering – paulm