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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: помогите с QProcess  (Прочитано 5676 раз)
linuxoid
Гость
« : Октябрь 26, 2007, 10:43 »

делаю так:
 QProcess *p = new QProcess();
p->start("mv /home/xxx/Desktop/test.ods /home/xxx/Desktop/test.zip ; zip -ju /home/xxx/Desktop/test.zip /home/xxx/Desktop/content.xml ; mv /home/xxx/Desktop/test.zip /home/xxx/Desktop/test.ods");

в консоле(shell)  такая строка работает на "УРА!", а в QProcess не фурычит!В чём проблема?может кто сталкивался?
3аранее благодарен Показает язык
Записан
QCasper
Гость
« Ответ #1 : Октябрь 26, 2007, 10:59 »

Попробуйте разбить вызов на несколько процессов (в Вашем случае на 3).
Записан
linuxoid
Гость
« Ответ #2 : Октябрь 26, 2007, 11:19 »

пробовал я на 3 разделять и не одна команда не выполнилась, а в одной строке первая часть выполняется:(
Записан
linuxoid
Гость
« Ответ #3 : Октябрь 26, 2007, 11:20 »

аргументы (-j) я слышал нужно указывать отдельно, но чё то у меня не получилось.
QProcess *p = new QProcess;
p->start(Qstring stroka,Qstring argument);- так?
Записан
Вячеслав
Гость
« Ответ #4 : Октябрь 26, 2007, 11:22 »

1) сделать на ходу sh и его запускать ( только chmod +x не забыть)
2) попробывать mv xx yy && zip yy1  && mv zz gg - но учти , что если кто-то обламаеться , то дальнейшая цепочка не будет выполнена
Записан
linuxoid
Гость
« Ответ #5 : Октябрь 26, 2007, 11:24 »

1) сделать на ходу sh и его запускать ( только chmod +x не забыть)
2) попробывать mv xx yy && zip yy1  && mv zz gg - но учти , что если кто-то обламаеться , то дальнейшая цепочка не будет выполнена


я чё то не понял. запустить в бэкапе shell и отправить ему сигнал со строкой для выполнени?или что?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #6 : Октябрь 26, 2007, 11:25 »

А если попробовать:
1. Имя проги "\bin\bash" ("cmd.exe").
2. В QStringList забиваете все параметрами.
start(QString,QStringList)
Т.е.
Код:
QStringList params;
params << "mv /home/xxx/Desktop/test.ods /home/xxx/Desktop/test.zip;" << "zip -ju /home/xxx/Desktop/test.zip /home/xxx/Desktop/content.xml;" << "mv /home/xxx/Desktop/test.zip /home/xxx/Desktop/test.ods"
process->start("/bin/bash",params);
« Последнее редактирование: Октябрь 26, 2007, 11:39 от panter_dsd » Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Вячеслав
Гость
« Ответ #7 : Октябрь 26, 2007, 11:53 »

1) сделать на ходу sh и его запускать ( только chmod +x не забыть)
2) попробывать mv xx yy && zip yy1  && mv zz gg - но учти , что если кто-то обламаеться , то дальнейшая цепочка не будет выполнена


я чё то не понял. запустить в бэкапе shell и отправить ему сигнал со строкой для выполнени?или что?
создаешь находу батник из своих команд и подсовываешь его шелу (*sh cmd) Подмигивающий
Записан
chipset
Гость
« Ответ #8 : Октябрь 26, 2007, 12:04 »

process.setProcessChannelMode(QProcess::ForwardedChannels);
Записан
linuxoid
Гость
« Ответ #9 : Октябрь 29, 2007, 11:45 »

А если попробовать:
1. Имя проги "\bin\bash" ("cmd.exe").
2. В QStringList забиваете все параметрами.
start(QString,QStringList)
Т.е.
Код:
QStringList params;
params << "mv /home/xxx/Desktop/test.ods /home/xxx/Desktop/test.zip;" << "zip -ju /home/xxx/Desktop/test.zip /home/xxx/Desktop/content.xml;" << "mv /home/xxx/Desktop/test.zip /home/xxx/Desktop/test.ods"
process->start("/bin/bash",params);

ну спасибо! этот метод и в правду работает! Смеющийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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