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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QProcess, запуск приложения с параметрами  (Прочитано 12195 раз)
santaclaus
Гость
« : Декабрь 02, 2009, 11:23 »

Доброго времени суток!
есть следующий код:
Код:
QProcess *proc = new QProcess(this);//обьявление процесса
QStringList arg;
arg << "-eo" << "pid,comm" << "|grep 25224"; //параметры для команды ps
proc->start("ps", arg);
proc->waitForFinished();
QString message = proc->readAll();
qDebug() << message;

Суть такая, если не задавать |grep ПИД_ИСКОМОГО_ПРОЦЕССА, то работает хорошо и все выводит, но как только дописываешь греп, то пусто. Посоветуйте как реализовать!

Всем привет!
Записан
spectre71
Гость
« Ответ #1 : Декабрь 02, 2009, 11:37 »

Доброго времени суток!
есть следующий код:
Код:
QProcess *proc = new QProcess(this);//обьявление процесса
QStringList arg;
arg << "-eo" << "pid,comm" << "|grep 25224"; //параметры для команды ps
proc->start("ps", arg);
proc->waitForFinished();
QString message = proc->readAll();
qDebug() << message;

Суть такая, если не задавать |grep ПИД_ИСКОМОГО_ПРОЦЕССА, то работает хорошо и все выводит, но как только дописываешь греп, то пусто. Посоветуйте как реализовать!

Всем привет!


"|grep 25224" - не параметр коммандной строки для "ps".
"|" - пайп организуемый shell.
Ты путаеешь понятия. Ты не вызываешь shell, ты сам создаешь один процесс
A это
"ps -eo pid,comm |grep 25224"
комманда для shell создать два процесса
"ps -eo pid,comm" и "grep 25224"
И передать данные из stdout перевого на stdin второго
Записан
santaclaus
Гость
« Ответ #2 : Декабрь 02, 2009, 12:44 »

Спасибо, ошибку понял.
Записан
BigHom
Гость
« Ответ #3 : Апрель 06, 2010, 09:02 »

Поясните - как надо написать? (как должно быть , чтоб правильно работало?)
Записан
crossly
Гость
« Ответ #4 : Апрель 06, 2010, 09:19 »

простейший способ сунуть это в командный файл... либо читать ассистент на предмет void QProcess::setStandardOutputProcess ( QProcess * destination )
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #5 : Апрель 06, 2010, 10:01 »

Цитировать
Поясните - как надо написать? (как должно быть , чтоб правильно работало?)
попробуй вызывать шелл и его параметрами(аргументами) указывать : "ps -eo pid,comm |grep 25224"
Записан

ArchLinux x86_64 / Win10 64 bit
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Апрель 06, 2010, 17:09 »

Код
Bash
/bin/sh -c "ps -eo pid,comm |grep 25224"
 

Соответственно, в QProcess передаёшь /bin/sh как программу и "-c", "\"ps -eo pid,comm |grep 25224\"" как два аргумента.
Записан
BigHom
Гость
« Ответ #7 : Апрель 29, 2010, 14:38 »

Ясно, а вот похожий случай: чтоб подсчитать КС cd-диска следует :
1) cмонтировать диск  :
       mount /mnt/cdrom
2)перейти в каталог /mnt/cdrom :
       cd /mnt/cdrom
3)выполнить :
       tar c `ls -A|sort` |md5sum

Как можно всё это выполнить из программы Qt ( интересуют 2-3 пункты ) , с учётом 2) перейти в каталог?
Записан
crossly
Гость
« Ответ #8 : Апрель 29, 2010, 15:05 »

выше все описано....
Записан
BigHom
Гость
« Ответ #9 : Апрель 30, 2010, 09:43 »

выше все описано....
Допустим всё записано в командный файл  file.com , как его запустить на выполнение?
Записан
crossly
Гость
« Ответ #10 : Май 03, 2010, 09:24 »

как обычный бинарник...
Записан
Marat(Qt)
Гость
« Ответ #11 : Май 03, 2010, 09:59 »

Как вариант:
Код:
/bin/sh -c "mount /mnt/cdrom&&cd /mnt/cdrom&&tar c `ls -A|sort` |md5sum"
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #12 : Май 03, 2010, 13:31 »

Ясно, а вот похожий случай: чтоб подсчитать КС cd-диска следует :

MD5 считается с устройства, а не с содержимого. То есть с файлв /dev/cdrom или другого, соответствующего CD-ROMу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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