2017-08-11 175 views
0

我正在尝试管道命令并执行它,但我无法确定如何管道。 我想多个文件一次使用shell命令在QProcess中执行shell命令。管道输入

用于%我(来源),先复制%I(目的地)

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(); 

如何为我的复制过程实现管道配置?

+0

[管道(或命令链接)与QProcess]可能重复(https://stackoverflow.com/questions/20901884/piping-or-command-chaining-with-qprocess) – Azeem

+0

@Azeem这些答案不帮助我。 –

+0

错误?问题是什么? – Azeem

回答

0

试试这个例子:

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

我试过 d-> copyProcess-> start(“sh”,QStringList()<<“-c”<< files);如果(!d-> copyProcess-> waitForFinished(-1)) qDebug()<<“Error is there”<< d-> copyProcess-> readAllStandardError(); } console = Error is there“” –

+0

@ninacheek:因此,命令不会在'stderr'上返回任何内容,但是出现错误。你是否尝试在没有管道的情况下运行命令?它是否成功运行? – Azeem

+0

@ninacheek:什么是'文件'?它的价值是什么? – Azeem