简体   繁体   中英

Executing the shell command in QProcess.Piping the input

I am trying to pipe the commands and execute it, but I am not able to figure how to pipe it. I am trying to copy multiple files at once using the shell command

for %I in (source) do copy %I (destination)

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

I have to implement the piping to do that. for Eg.

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

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

How can I implement piping for my copy process?

Try this example:

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() should be called in blocking mode and it must be checked if it was successful or not.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM