2016-04-11 50 views
0

Qt projemde bir Linux komutunu çalıştırmak için QProcess kullanmak istiyorum. İşlemimin bazı argümanları var, bu yüzden şu kodu kullandım:QProcess değişkeninde bir değişken ile nasıl kullanılır?

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

Çıkış null. Ama değişkeni bir değerle değiştirdiğimde, çıktı tamamdır ve orada bir hata yoktur.

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

Bunu nasıl çözebilirim?

cevap

4

| grep ELF gibi şeyler kabuk tarafından ayrıştırılan ve yorumlanan kabuk ifadeleridir. Bu özel durumda, kabuk iki sürecini ortaya çıkarır, bu da eski çıkışın ikincisinin girdisine yönlendirilmesini sağlar. Programsal olarak bunu yapmak isterseniz, bash'u veya QProcess'u kullanarak kullandığınız kabuğu kullanmanız ve bağımsız değişken olarak /root/a.o -c file | grep ELF'u geçirmeniz gerekir. Gerekli bayrağı bulmak için man bash'a bakın.

+0

Teşekkürler. Ben 2 QProcess kullanıyorum & Tamam şimdi. –

İlgili konular