[gelöst] Windows: Qt-Konsolenprogramm soll von Stdin lesen

Alles rund um die Programmierung mit Qt
Antworten
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

[gelöst] Windows: Qt-Konsolenprogramm soll von Stdin lesen

Beitrag von Tilman Räger »

Hallo,

ich bin gerade dabei, etwas telnet-ähnliches zu schreiben. Das Teil soll als ganz normales Konsolenprogramm von der DOS-Box aus aufgerufen werden und sich mit einem server verbinden. durch eingabe von Befehlen sollen dann verschiedene Dateioperationen auf dem Server ausgeführt werden.

Aktuell verwende ich einen QSocketNotifier, der mit stdin verbunden wird:

Code: Alles auswählen

QSocketNotifier *pNot = new QSocketNotifier(fileno(stdin), QSocketNotifier::Read, this);
connect(pNot, SIGNAL (activated(int)), SLOT(readCommand()));
Dann gehe ich mal davon aus, das ich im Slot readCommand() dann die Eingaben abholen und verarbeiten kann. Funktioniert unter Linux auch problemlos - nur leider nicht unter Windows (Virtualle Maschine unter Win7 (32bit)) - wenn ich hier das Programm von der DOS-Box starte, verbindet es sich brav mit dem Server, gibt den von mir implementierten Prompt aus - und wartet (bis es schwarz wird :-)
Meine Eingaben kommen nicht an - allerdings wenn ich das Programm beende, werden die Kommandos schön der Reihenfolge nach von der DOS-Box abgearbeitet :-(

Hat hier jemand eine Idee, wie ich dem Teil auf die Sprünge helfen kann.

CONFIG += Console
ist im .pro-File enthalten!

Gruss
Tilman (Räger)
Zuletzt geändert von Tilman Räger am 11. Dezember 2015 17:27, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Windows: Qt-Konsolenprogramm soll von Stdin lesen

Beitrag von Christian81 »

Da stdin/stdout (unter Windows) sich nicht wie ein socket verhält, funktioniert QSocketNotifier unter Windows damit nicht. Siehe z.B. hier: https://bugreports.qt.io/browse/QTBUG-15457
m.E. stand es auch irgendwo in der Doku, finde es aber gerade nicht.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Tilman Räger
Beiträge: 189
Registriert: 6. Juni 2007 15:23
Wohnort: Göttingen

Re: Windows: Qt-Konsolenprogramm soll von Stdin lesen

Beitrag von Tilman Räger »

Daran also liegt es :-)

Ich habe inzwischen das ganze auch mit QFile ausprobiert, stdin geöffnet und den Slot 'readRead' verknüpft - gleiches Ergebnis. Das Ende vom Lied: Ich habe die ganze Signal/Slot geschichte rausgeworfen und eine gute, solide Endlosschleife probiert, in der zu Beginn eine Zeile von stdin gelesen wird - und gut ist.
Damit funktionierts!

Trotzdem Danke an alle, die sich ihr Gehirn zermartert haben ;-)

Gruss
Tilman
Antworten