2017-08-11 15 views
0

私はコマンドをパイプして実行しようとしていますが、パイプする方法を理解できません。 私がI(ソースは)私は、配管を実装する必要がI(宛先)QProcessでシェルコマンドを実行しています。入力をパイプに入れます。

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

%をコピーしない%をシェルコマンドに

を使用して一度に複数のファイルをコピーしようとしていますそれを行う。例:

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

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

どのように私は私のコピー処理のための配管を実装することができますか?ブロックモードで

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()が呼び出されるべきで、それが成功したかどうかをチェックする必要があります。

+0

[QProcessを使用した配管(またはコマンド連鎖)]の可能な複製(https://stackoverflow.com/questions/20901884/piping-or-command-chaining-with-qprocess) – Azeem

+0

@Azeemこれらの回答は私を助けません。 –

+0

エラー?問題? – Azeem

答えて

0

は、この例を試してみてください。

+0

私は試しました d-> copyProcess-> start( "sh"、QStringList()<< "-c" << files); if(!d-> copyProcess-> waitForFinished(-1)) { qDebug()<< "エラーがあります" << d-> copyProcess-> readAllStandardError(); } console =エラーがあります " –

+0

@ninacheek:コマンドは' stderr'で何も返しませんが、エラーがありました。パイプなしでコマンドを実行しようとしましたか?それは正常に実行されますか? – Azeem

+0

@ninacheek: 'ファイル'とは何ですか?その価値は何ですか? – Azeem

関連する問題