2016-04-11 3 views
0

Ich möchte QProcess verwenden, um einen Linux-Befehl in meinem Qt-Projekt auszuführen. Mein Prozess hat einige Argumente, daher habe ich den folgenden Code verwendet:Wie verwende ich QProcess mit einer Variablen in seinem Argument?

QString _strFileName = "/root/a.o"; 
QStringList _strListArguments; 
_strListArguments << "-c" << "file " << _strFileName << " | grep ELF"; 
_processFile->start("bash", _strListArguments); 
_processFile->waitForFinished(); 

Der Ausgang ist null. Aber wenn ich die Variable durch einen Wert ersetze, ist die Ausgabe in Ordnung und dort ist kein Fehler.

_strListArguments << "-c" << "file /root/a.o | grep ELF"; 

Wie kann ich das lösen?

Antwort

4

Dinge wie | grep ELF sind Shell-Ausdrücke, die von der Shell geparst und interpretiert werden. In diesem speziellen Fall erzeugt die Shell zwei Prozesse, wobei die Ausgabe des Formers in die Eingabe des letzteren umgeleitet wird. Wenn Sie dies programmgesteuert durchführen möchten, müssen Sie bash oder die von Ihnen verwendete Shell mit QProcess ausführen und /root/a.o -c file | grep ELF als Argument übergeben. Siehe man bash, um die erforderliche Flagge zu finden.

+0

Danke. Ich benutze 2 QProcess & Es ist jetzt OK. –