crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Передача сложного аргумента в QProcess
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 19:01
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


xwininfo -name "`wmctrl -l | grep SMPlayer | cut -c26-`" | grep "Absolute upper-left Y" | cut -c27-
Это надо выполнить.
Вот фулл:
    QProcess myProcess;
    QString program = "xwininfo";
    QStringList arguments;
    arguments<<"-name"<<"`wmctrl -l | grep SMPlayer | cut -c26-`"<<"| grep 'Absolute upper-left Y' | cut -c27-";
    myProcess.start(program, arguments);
    myProcess.waitForFinished();
    myProcess.close();
    qDebug()<<myProcess.readAll();


У меня ""`wmctrl -l | grep SMPlayer | cut -c26-`"" должно быть как бы в двух кавычках.
Если arguments<<'"-name"'; то даже не компилит.

Сообщение отредактировал RazrFalcon - 7.2.2011, 19:02
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 7.2.2011, 19:07
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


экранировать кавычку ?

\"

? :)

arguments<<"\"-name\"";
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 19:09
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


arguments<<"-name"<<"\"`wmctrl -l | grep SMPlayer | cut -c26-`\""<<"| grep 'Absolute upper-left Y' | cut -c27-";

так? не пашит все равно...

ИЛИ
QProcess вообще может работать с конвейерами, или надо каждый аргумент отдельно запускать?
Я про wmctrl, grep, cut.

qDebug()<<arguments; выводит:
Цитата
("-name", ""`wmctrl -l | grep SMPlayer | cut -c26-`"", "|", "grep", ""Absolute upper-left Y"", "|", "cut", "-c27-")
Так что все вроде в норме.



Сообщение отредактировал RazrFalcon - 7.2.2011, 19:24
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 7.2.2011, 19:26
Сообщение #4


фрилансер
******

Группа: Участник
Сообщений: 2900
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


Цитата(RazrFalcon @ 7.2.2011, 21:09) *
так? не пашет все равно...


во-первых, у тебя зачем и кавычки (") и апострофы (') и ещё некие странные символы (`) . Ну а по существу не могу ничего подсказать, не сталкивался :(

Попробую сейчас в справку глянуть

аа, ты вон про что. У тебя же линукс. Нет, не смогу подсказать точно
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 7.2.2011, 19:34
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Все пайпы организует шел, поэтому и запускать его придется.
Сделай скрипт и запускай уже его или руками запускай шел.
sh -c "cmd1 | cmd2 | cmd3"

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 19:39
Сообщение #6


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Про шел уже нашел, спасибо.
А скрипт - это идея. Сейчас попробую.
Так как шел тоже не завелся =/

А само
qDebug()<<myProcess.readAll();
правильно, или его нужно раньше писать?
Может к тому моменту там уже пусто =/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 7.2.2011, 19:41
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(RazrFalcon @ 7.2.2011, 19:39) *
Может к тому моменту там уже пусто =/

Пусто там может быть только "еще", а "уже" быть не может (если никто другой оттуда ничего не вычитывет). :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 19:45
Сообщение #8


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Цитата(read)
#!/bin/bash
xwininfo -id `wmctrl -l | grep SMPlayer | cut -c1-10` | grep 'Absolute upper-left Y' | cut -c27-


так работает
    QProcess myProcess;
    QString program = "/bin/sh";
    QStringList arguments;
    arguments<<"../ambilight/read";
    myProcess.start(program, arguments);
    myProcess.waitForFinished();
    qDebug()<<myProcess.readAll();
    myProcess.close();


qDebug()<<myProcess.readAll(); - только перед myProcess.close(); если после то выводит пустоту. Я об этом спрашивал выше.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 7.2.2011, 19:48
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(RazrFalcon @ 7.2.2011, 19:45) *
qDebug()<<myProcess.readAll(); - только перед myProcess.close(); если после то выводит пустоту. Я об этом спрашивал выше.

Я на close() и внимания не обратил. :)
Его явно можно и не вызывать, все закроется автоматически после разрушения объекта myProcess.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 7.2.2011, 19:50
Сообщение #10


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


ААА... ясно. Спасибо. Пашет. :lol:
Еще бы понят почему оно без скрипта не хочет =\

...
arguments<<"-c"<<"xwininfo -id `wmctrl -l | grep SMPlayer | cut -c1-10`  | grep 'Absolute upper-left X' | cut -c27-";
Если все кавычки убрать - пашет!
Только теперь мне надо два процесса запускать, а со скриптом 1-н. Так даже лучше :lol: .

PS как можно прикрутить подсветку синтаксиса у bash в QT Creator?

Сообщение отредактировал RazrFalcon - 7.2.2011, 19:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 7.8.2020, 15:49