Название: QProcess и командная строка Отправлено: ysfox от Ноябрь 11, 2010, 18:27 Вопрос собственно вот какой:
подаю команду через командную строку, и все работает хорошо выдает результат - количество файлов в каталоге Код: system("find Files -print | wc -l"); Код: proc.setProcessChannelMode(QProcess::MergedChannels); выкидывает вот такую ошибку: Код: 2MAKE OUTPUT_2: "BUSYBOX V1.2.1 (2008.12.11-18:16+0000) MULTI-CALL BINARY Скажыте пожалуйста в чем может быть проблема гадываюсь что процес не может передать результат первого вычисления во фторую команду Код: wc -l Название: Re: QProcess и командная строка Отправлено: crossly от Ноябрь 11, 2010, 18:32 потому как QProcess не поддерживает перенаправление ввода/вывода и конвейеры ... что кстати говоря не раз обсуждалось на форуме....
используйте Код: void QProcess::setStandardOutputProcess ( QProcess * destination ) Название: Re: QProcess и командная строка Отправлено: ysfox от Ноябрь 11, 2010, 18:36 Спасибо попробую...
И извините за флуд, просто действительно не нашол похожей темы, наверное плохо искал :) даже забыл что можно передавать результат одного процеса второму... я никогда просто этой способностью не пользовался. только вот как правильно ней воспользоватся, но это такое поищю примеры в интернете.. спасибо! Название: Re: QProcess и командная строка Отправлено: crossly от Ноябрь 11, 2010, 18:48 в первую очередь искать надо не в интернете а в ассистенте ....
Название: Re: QProcess и командная строка Отправлено: ysfox от Ноябрь 11, 2010, 18:51 знаю)
но там в основном примеров использования нет только описание, я туда сразу же заглянул как увидел Ваш пост :)... некоторые функцыи и без примеров довольно просты, а вот эту лучше в картинках :) (там эсть пример но вот когда в консольку вывести выполнение 1го процесса и второго мне это интересно) Название: Re: QProcess и командная строка Отправлено: ysfox от Ноябрь 12, 2010, 11:39 сделал вот так:
proc.setProcessChannelMode(QProcess::MergedChannels); proc_2.setProcessChannelMode(QProcess::MergedChannels); proc.setStandardOutputProcess(&proc_2); proc.start("find Files -print"); proc_2.start("wc -l"); if (!proc.waitForFinished()) { qDebug() << "Make_Proc failed:" << proc.errorString(); } else { qDebug() << "Make_Proc output:" << proc.readAll(); }; proc.close(); if (!proc_2.waitForFinished()) { qDebug() << "Make_Proc_2 failed:" << proc_2.errorString(); } else { Rez_String= proc_2.readAll(); Rez_String.remove(" "); Rez_String.remove("\t"); Rez_Files_int = Rez_String.toLong(); qDebug() << "Make_Proc_2 output:" << Rez_String; }; proc_2.close(); все работает :) спасибо за совет... |