Can't get QProcess to work.. using cygwin and rsync
-
Hello
I'm trying to execute a rsync from cygwin, just for start playing with qprocess
bassing my code on Qt example, it runs but it does notting at allpretty sure is something simple I don't understand, I'm stuck
QString program = "cygwin64/rsync.exe"; QStringList arguments; arguments <<"-rtvu"<< "cygdrive/C/path/to/folder/" << "cygdrive/X/path/to/folder/"; QProcess *myProcess = new QProcess(); myProcess->start(program, arguments);I made one string with "program" and "arguments" to see what is passed to Qt then copied & paste and works just fine on windows terminal.
investigating through the web, the examples and explanations shown by other people doesn't seem to work with me.
thank you in advance
P.D.
Qtcreator 7.0
Qt 6.3.0
Toolkit msvc2019 (Visual studio 2022 community)
Windows 11 pro (with latest updates) -
Hello
I'm trying to execute a rsync from cygwin, just for start playing with qprocess
bassing my code on Qt example, it runs but it does notting at allpretty sure is something simple I don't understand, I'm stuck
QString program = "cygwin64/rsync.exe"; QStringList arguments; arguments <<"-rtvu"<< "cygdrive/C/path/to/folder/" << "cygdrive/X/path/to/folder/"; QProcess *myProcess = new QProcess(); myProcess->start(program, arguments);I made one string with "program" and "arguments" to see what is passed to Qt then copied & paste and works just fine on windows terminal.
investigating through the web, the examples and explanations shown by other people doesn't seem to work with me.
thank you in advance
P.D.
Qtcreator 7.0
Qt 6.3.0
Toolkit msvc2019 (Visual studio 2022 community)
Windows 11 pro (with latest updates)@roygual
You should check for errors, and more particularly read anything from stderr/stdout.You are using a relative path to the executable,
cygwin64/rsync.exe. How do you know what the current directory is, and whether it can find that?and works just fine on windows terminal
Depends what the current directory was.
-
@roygual
You should check for errors, and more particularly read anything from stderr/stdout.You are using a relative path to the executable,
cygwin64/rsync.exe. How do you know what the current directory is, and whether it can find that?and works just fine on windows terminal
Depends what the current directory was.
-
@roygual
You should check for errors, and more particularly read anything from stderr/stdout.You are using a relative path to the executable,
cygwin64/rsync.exe. How do you know what the current directory is, and whether it can find that?and works just fine on windows terminal
Depends what the current directory was.
-
@roygual
You should check for errors, and more particularly read anything from stderr/stdout.You are using a relative path to the executable,
cygwin64/rsync.exe. How do you know what the current directory is, and whether it can find that?and works just fine on windows terminal
Depends what the current directory was.
-
@roygual
You should check for errors, and more particularly read anything from stderr/stdout.You are using a relative path to the executable,
cygwin64/rsync.exe. How do you know what the current directory is, and whether it can find that?and works just fine on windows terminal
Depends what the current directory was.
@JonB
it was just a bunch of little mistakes typical of an amateur like mehere de correct and working code
QStringList arguments; arguments <<"-r"<<"/cygdrive/x/Users/Roy/Desktop/uno/"<<"/cygdrive/x/Users/Roy/Desktop/dos/"; QProcess *myProcess = new QProcess(); myProcess->start("cygwin64/rsync.exe", arguments); myProcess->waitForFinished(-1); QString out = myProcess->readAllStandardOutput(); QString error = myProcess->readAllStandardError(); qDebug()<<out; qDebug()<<error;Thank you very much for your help!!
-
@JonB
it was just a bunch of little mistakes typical of an amateur like mehere de correct and working code
QStringList arguments; arguments <<"-r"<<"/cygdrive/x/Users/Roy/Desktop/uno/"<<"/cygdrive/x/Users/Roy/Desktop/dos/"; QProcess *myProcess = new QProcess(); myProcess->start("cygwin64/rsync.exe", arguments); myProcess->waitForFinished(-1); QString out = myProcess->readAllStandardOutput(); QString error = myProcess->readAllStandardError(); qDebug()<<out; qDebug()<<error;Thank you very much for your help!!
@roygual said in Can't get QProcess to work.. using cygwin and rsync:
myProcess->start("cygwin64/rsync.exe", arguments);
I still say: How do you know what the current working directory is when your program is run for it to find the executable via a relative path
cygwin64/rsync.exe? If, say, youcd \windowsbefore running your Qt application or "copied & paste and works just fine on windows terminal" what happens?Your final code "leaks" the
QProcessfromQProcess *myProcess = new QProcess();. -
@roygual said in Can't get QProcess to work.. using cygwin and rsync:
myProcess->start("cygwin64/rsync.exe", arguments);
I still say: How do you know what the current working directory is when your program is run for it to find the executable via a relative path
cygwin64/rsync.exe? If, say, youcd \windowsbefore running your Qt application or "copied & paste and works just fine on windows terminal" what happens?Your final code "leaks" the
QProcessfromQProcess *myProcess = new QProcess();.My idea is to move the program folder one place to another, portable; copy the app folder to one computer to another or move it with a thumbdrive the cygwin64 folders is in the app folder and next to the executable ,
to my understand this path always start from the executable is, .. is "relative" to the executablecd \windows and copy/paste to other locations, even on usb, double click or terminal.. works.
I'm a total novice, if I'm doing a bad practice I would be very grateful if you correct me.
talking about bad practices
QProcess *myProcess = new QProcess(this); -
My idea is to move the program folder one place to another, portable; copy the app folder to one computer to another or move it with a thumbdrive the cygwin64 folders is in the app folder and next to the executable ,
to my understand this path always start from the executable is, .. is "relative" to the executablecd \windows and copy/paste to other locations, even on usb, double click or terminal.. works.
I'm a total novice, if I'm doing a bad practice I would be very grateful if you correct me.
talking about bad practices
QProcess *myProcess = new QProcess(this);@roygual said in Can't get QProcess to work.. using cygwin and rsync:
cd \windows and copy/paste to other locations, even on usb, double click or terminal.. works.
I don't understand since you show you are running executable via relative path
cygwin64/rsync.exe. But that works for you somehow. -
@roygual said in Can't get QProcess to work.. using cygwin and rsync:
cd \windows and copy/paste to other locations, even on usb, double click or terminal.. works.
I don't understand since you show you are running executable via relative path
cygwin64/rsync.exe. But that works for you somehow. -
@JonB
Hello
Tested on a second PC win11, with Qt installed but did not build or used with qtcreator, .... copied the folder to desktop and run the binary with double click... still working fine.I'll test with win 10 on other pc.
regards
@roygual
It's nothing to do with how you build or what machine you test it on. It's: how is windows locating the relative pathcygwin64/rsync.exeyou either span from your Qt program or type into a Command Prompt, without relying on whatever the current directory happens to be?