kommunikation ueber die standardausgabe

Alles rund um die Programmierung mit Qt
Antworten
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

kommunikation ueber die standardausgabe

Beitrag von qt fan »

hallo,
ich schreibe 2 programme und eines startet das andre mit QProcess und benutzt dann QProcess::write() um dem prozess befehle zu geben.
leider faellt mir nicht ein wie der gestartete prozess jetzt an die befehle herankommt. anders ausgedrueckt wo kann man diese befehle auslesen die man mit write() geschickt bekommt?

mfg qt fan
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Such mal nach QFile und stdin...
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Möchtest du gerne mehrmals hin und her kommunizieren? Weil das geht, so viel ich weis, mit QProcess nicht. Ich wollte mal mit QProcess auf isql zugreifen, konnte aber jeweils nur eine Anfrage senden, da sie nur nach einem closeWriteChannel() verarbeitet wird. Und öffnen lässt sich der nicht mehr. Also in diesem fall müsstest du dich nach einer anderen Lösung umsehen...
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

cin bringt das schon?
[/img]
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

ok ich hab jetzt cin nicht ausprobiert, werde das aber bald tun.
hab mir gerad die gesamte detailed description von QFile im assistant durchgelesen, jetzt sehe ich aber keinen zusammenhang zu meinem problem. waere nett wenn mir da mal jemand den zusammenhang erklaehrt.

vielen dank, qt fan
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Vieles unter Unix-Derivaten ist einfach eine "File".Standard-Input/Output (und auch Error-Input/Output) koennen daher einfach als Datei betrachtet und auch ganz genau so behandelt werden. Dieses "stdin" und "stdout" ist (bei einem Aufruf in der Konsole) also die Konsole selbst (Keyboard), kann jedoch auch ein beliebiges anderes Device sein (z.B. RS232, TCP-Sockets oder wieder eine andere File...).
Wenn du also im Parent auf den QProzess was schreibst (write()), ist das so, wie wenn jemand das Programm in der Konsole gestartet und genau diese Eingabe mittels Tastatur gemacht haette.
Du kannst also mit beliebigen Mitteln (z.B. cin/cout) von stdin/stdout lesen/schreiben. Unter Qt findet man haeufig Beispiele mit QFile (daher der obige Hinweis). Vom stdin kann z.B. mittels

Code: Alles auswählen

QFile myFile;
myFile.open(stdin, QFile::ReadOnly);
QString input = myFile.readLine();
gelesen werden ("stdin" ist IMHO in <stdio.h> definiert). Und hier wuerdest du also den String empfangen, welcher du mit QProcess::write() gesendet hast ("\n" fuer den readLine() nicht vergessen...)
qt fan
Beiträge: 53
Registriert: 28. Dezember 2007 21:41

Beitrag von qt fan »

danke fuer die aufschlussreiche antwort solarix
Antworten