2017-08-11 3 views
0

J'essaie de rediriger les commandes et de les exécuter, mais je n'arrive pas à comprendre comment les acheminer. Je suis en train de copier plusieurs fichiers à la fois en utilisant la commande shellExécution de la commande shell dans QProcess.Piping de l'entrée

pour% I (source) do not copy% I (destination)

QString files = "for %I in (source) do copy %I (destination)" 
QProcess copy ; 
copy.start(files); 

Je dois mettre en œuvre la tuyauterie à fais ça. pour Eg.

QProcess sh; 
sh.start("sh", QStringList() << "-c" << "ifconfig | grep inet"); 

sh.waitForFinished(); 
QByteArray output = sh.readAll(); 
sh.close(); 

Comment puis-je implémenter la tuyauterie pour mon processus de copie?

+0

Copie possible de [Tuyauterie (ou chaînage de commande) avec QProcess] (https://stackoverflow.com/questions/20901884/piping-or-command-chaining-with-qprocess) – Azeem

+0

@Azeem ces réponses ne m'aident pas . –

+0

Erreurs? Problèmes? – Azeem

Répondre

0

Essayez cet exemple:

QProcess sh; 
sh.start("sh", { "-c", "ifconfig | grep inet" }); 

if (!sh.waitForFinished(-1)) 
{ 
    qDebug() << "Error:" << sh.readAllStandardError(); 
    return -1; 
} 

const auto output = sh.readAllStandardOutput(); 
// ... 

waitForFinished() devrait être appelé en mode blocage et il faut vérifier si elle a réussi ou non.

+0

J'ai essayé d-> copyProcess-> start ("sh", QStringList() << "-c" << fichiers); if (! D-> copyProcess-> waitForFinished (-1)) { qDebug() << "L'erreur est présente" << d-> copyProcess-> readAllStandardError(); } console = L'erreur est là "" –

+0

@ninacheek: Donc, la commande ne retourne rien sur 'stderr' mais il y avait une erreur. Avez-vous essayé d'exécuter la commande sans tuyau? Est-ce que cela fonctionne avec succès? – Azeem

+0

@ninacheek: Qu'est-ce que 'files'? Quelles sont ses valeurs? – Azeem