AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

Ein Thema von Kyro · begonnen am 18. Mai 2014 · letzter Beitrag vom 18. Mai 2014
Antwort Antwort
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#1

Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

  Alt 18. Mai 2014, 01:33
Ich teste gerade das Umleiten der Bildschirmausgabe von Commandline-Tools mit dem üblichen dafür geeigneten Code mit Pipe und stdout.
Zur Zeit kommt der Code von Apollonius zum Einsatz, der sogar overlapped I/O verwendet.

Das funktioniert an sich ganz gut - es sei denn man ruft z.B.: die "gpupdate.exe" damit auf ...
Dann passiert folgendes...
gpupdate.exe startet -> beendet -> Und zum Schluss gibt es erst die Bildschirmausgabe:

Die Richtlinie wird aktualisiert...

Die Aktualisierung der Benutzerrichtlinie wurde erfolgreich abgeschlossen.
Die Aktualisierung der Computerrichtlinie wurde erfolgreich abgeschlossen.


(gpupdate.exe braucht dazu ca. 15 Sekunden)

Erwarten würde ich mir (da es auch so in der Eingabeaufforderung ausgegeben wird) ...
gpupdate.exe startet -> Gibt "Die Richtlinie wird aktualisiert..." aus -> Und gibt zum Schluss die restlichen Zeilen aus.

Für einen Vergleich kann man "ping 127.0.0.1" ausprobieren - Das klappt mit dem Code einwandfrei - hier kommt jede Zeile genau dann rein wie es in der Eingabeaufforderung passiert.

Nachtrag:
Inzwischen denke ich dass ich die Ursache dafür schon kenne -> (stdout <> console)
Wie kann man den Console Output (CON) abgreifen?

Geändert von Kyro (18. Mai 2014 um 12:59 Uhr) Grund: siehe Post #3
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.076 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

  Alt 18. Mai 2014, 07:47
Wieso nimmst du nicht die eigentlich dafür vorgesehene API?
Dieser Workaround mit Umleiten stdout sollte man nur Aufgaben machen in denen es keine API-Schnittstelle gibt.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

  Alt 18. Mai 2014, 11:28
Ich suche keinen Workaround konkret zur gpupdate.exe (Du hast recht, dafür gibt es besserer Wege)...
Das Problem gibt es auch bei anderen commandline-tools (3rd Party, zu denen es keine API gibt) und tlw. werden einige Bildschirmausgaben gar nicht an die stdout (oder stderr) umgeleitet.

Inzwischen denke ich dass ich die Ursache dafür schon kenne -> (stdout <> console)
Zur Veranschaulichung habe ich folgendes Batch-File ausgegraben:
Code:
ECHO OFF
ECHO Standard Output (stdout)
ECHO Standard Error (stderr) 1>&2
ECHO console output >CON
Bisher ist es mir nur möglich stdout und stderr abzufangen, wie komme ich nun aber an CON, dem "console output" heran?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

  Alt 18. Mai 2014, 11:45
Das Hauptproblem bei gpupdate.exe ist, dass das asynchron ausgeführt wird.

Das wurde irgendwann mal geändert, da sonst die Anmeldung zu lange dauerte.

Es gibt einen Parameter /sync , aber ob der das Gewünschte erfüllt ... ausprobieren
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

  Alt 18. Mai 2014, 12:03
Das löst das Problem nicht - weder im Bezug auf die gpupdate, noch auf die eigentliche Problematik
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

  Alt 18. Mai 2014, 12:16
Das löst das Problem nicht - weder im Bezug auf die gpupdate, noch auf die eigentliche Problematik
Du hast doch (wenigstens vor dem Update deines ersten Beitrags) explizit auch nach Denkanstößen gefragt und warum das passiert.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Kyro

Registriert seit: 16. Aug 2005
Ort: Wien
45 Beiträge
 
Delphi XE2 Professional
 
#7

AW: Verzögerte Ausgabe beim Umleiten von stdout bei gpupdate.exe

  Alt 18. Mai 2014, 12:23
Ja, ich bin auch dankbar für Lösungsvorschläge, allerdings wusste ich ehrlich gesagt bei der Erstellung des Beitrags nicht so recht wie ich das Problem angehen soll ohne ein Beispiel (gpupdate.exe) einzubringen.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf