Есть конвеерная комманда:
bsdlabel /dev/ad0s1 | grep -v "^#" | grep -v "partitions" | awk '{print $1 " " $2 " " $3 " " $4;}'
Кодирую ее следующим образом:
QProcess *Process1 = new QProcess();
QProcess *Process2 = new QProcess();
QProcess *Process3 = new QProcess();
QProcess *Process4 = new QProcess();
Process1->setStandardOutputProcess(Process2);
Process2->setStandardOutputProcess(Process3);
Process3->setStandardOutputProcess(Process4);
QString BSDLabelStr = "";
Process1->start("bsdlabel /dev/ad0s1");
Process2->start("grep -v \"^#\"");
Process3->start("grep -v \"partitions\"");
Process4->start("awk \'{print $1 \" \" $2 \" \" $3 \" \" $4;}\'");
if (Process4->waitForReadyRead())
{
BSDLabelStr=Process4->readAll();
}
Process4->waitForFinished();
QFile File("out.txt");
if (!File.open(QIODevice::WriteOnly | QIODevice::Text))
return -1;
QTextStream Out(&File);
if (Process4->exitCode()==0)
Out << BSDLabelStr;
else
Out << "Failed";
File.close();
В результате в файле out.txt "Failed". Причем проблема именно в четвертом процессе конвейера.
Может я что-то неправильно 4-м процессе экранировал?