Russian Qt Forum

Qt => Общие вопросы => Тема начата: linuxoid от Октябрь 26, 2007, 10:43



Название: помогите с QProcess
Отправлено: 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аранее благодарен :P


Название: Re: помогите с QProcess
Отправлено: QCasper от Октябрь 26, 2007, 10:59
Попробуйте разбить вызов на несколько процессов (в Вашем случае на 3).


Название: Re: помогите с QProcess
Отправлено: linuxoid от Октябрь 26, 2007, 11:19
пробовал я на 3 разделять и не одна команда не выполнилась, а в одной строке первая часть выполняется:(


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


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


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


я чё то не понял. запустить в бэкапе shell и отправить ему сигнал со строкой для выполнени?или что?


Название: Re: помогите с QProcess
Отправлено: Пантер от Октябрь 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);


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


я чё то не понял. запустить в бэкапе shell и отправить ему сигнал со строкой для выполнени?или что?
создаешь находу батник из своих команд и подсовываешь его шелу (*sh cmd) ;)


Название: Re: помогите с QProcess
Отправлено: chipset от Октябрь 26, 2007, 12:04
process.setProcessChannelMode(QProcess::ForwardedChannels);


Название: Re: помогите с QProcess
Отправлено: linuxoid от Октябрь 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);

ну спасибо! этот метод и в правду работает! ;D