Russian Qt Forum
Ноябрь 25, 2024, 20:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess & awk  (Прочитано 4483 раз)
MelkorBSD
Гость
« : Апрель 26, 2009, 19:55 »

Есть конвеерная комманда:
Код:
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-м процессе экранировал?
Записан
Rcus
Гость
« Ответ #1 : Апрель 26, 2009, 20:24 »

В доках по QProcess указано как следует экранировать аргументы, содержащие пробелы. Непонятно только две вещи: нужны ли в данном случае пайпы и не проще ли передавать аргументы отдельно?
Записан
MelkorBSD
Гость
« Ответ #2 : Апрель 26, 2009, 21:08 »

В доках по QProcess указано как следует экранировать аргументы, содержащие пробелы. Непонятно только две вещи: нужны ли в данном случае пайпы и не проще ли передавать аргументы отдельно?
Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.098 секунд. Запросов: 20.