Komisches Verhalten von QProcess[gelöst]

Alles rund um die Programmierung mit Qt
Antworten
guybrush
Beiträge: 4
Registriert: 16. September 2005 17:08

Komisches Verhalten von QProcess[gelöst]

Beitrag von guybrush »

Hallo liebe Gemeinde,

Ich kämpfe hier den ganzen Nachmittag mit einem ganz merkwürdigem Problem in Verbindung mit QProcess.

Prinzipiell funktioniert es, wenn ich jedoch bestimmte Parameter dem Prozess übermittle, dann wird das externe Programm fehlerhaft gestartet.

OK. Konkret zum Code und Problem: Ich möchte im Prinzip spumux aus meiner Anwendung starten. Folgender Code:

Code: Alles auswählen

QString program = "spumux";
QStringList arguments;
arguments << "menu1-spumux.xml" << "< menu1-background.mpg >" << "menu1-final.mpg";

mSpumux->start(program, arguments);
mSpumux wird im Konstruktor der Klasse mit

Code: Alles auswählen

mSpumux = new QProcess(this);
initialisiert.

Wenn ich jetzt meine App starte, dann sehe (entsprechende Signale fange ich ab, z.B. readyReadStandardOutput()) ich dass spumux wirklich gestartet wird. Aber die Argumente, welche ich diesem Prozess übermittelte, werden nicht vernünftig verwendet. Jedenfalls gibt spumux Fehlermeldungen aus. Starte ich hingegen spumux auf der Konsole mit eben genau diesen Parametern, dann sehe ich dass es funktioniert.

Nun dachte ich mir ok, dann schreibe ich halt ein Skript, welches im wesentlichen aus dem folgenden Code besteht:

Code: Alles auswählen

#!/bin/sh
spumux $1 < $2 > $3
Wenn ich das Skript aufrufe mit dem obigen Code, nur ohne diese "<" und ">"-Zeichen, dann funktioniert alles wunderbar. Ist aber ne blöde Lösung, weil ich schon gern spumux direkt in meiner Anwendung aufrufen möchte und nicht über ein Mittlerskript.

Was sagt ihr dazu? Hattet ihr mit QProcess ein ähnliches Problem? Oder hat für mich jemand einen Tipp, ich bin mittlerweile ziemlich ratlos. Auch ein benutzen der alten Q3Process-Klasse ergab kein Erfolg.

Liebe Grüße,
Guybrush

PS:

System: Debian Linux 4.0
Qt: 4.2.1
Zuletzt geändert von guybrush am 4. Juni 2007 19:58, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

'<' und '>' sind Befehle der Shell. Unter Qt gibts dafür QIODevice::write() und QIODevice::read() bzw. siehe QProcess Doku.
Ausserdem wird in deinem Fall '< menu1-background.mpg >' als ein Argument interpretiert was es ja nicht ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
guybrush
Beiträge: 4
Registriert: 16. September 2005 17:08

Danke

Beitrag von guybrush »

Ja ich bin ein richtiger Depp. Alles Klar!

sh -c "spumux ..." ist die Lösung die ich

im QProcess aufrufen muß. Dann klappts auch. Danke Christian!
Antworten