Seite 1 von 1
kommunikation ueber die standardausgabe
Verfasst: 13. Juli 2008 21:08
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
Verfasst: 13. Juli 2008 22:20
von upsala
Such mal nach QFile und stdin...
Verfasst: 13. Juli 2008 23:07
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...
Verfasst: 14. Juli 2008 03:22
von qt fan
cin bringt das schon?
[/img]
Verfasst: 14. Juli 2008 17:20
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
Verfasst: 15. Juli 2008 13:15
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...)
Verfasst: 14. August 2008 16:17
von qt fan
danke fuer die aufschlussreiche antwort solarix