QProcess start, correct way to pass arguments with > piping to an output file.
-
Trying to pipe output of an executable to a file. Code is:
QString p = QString::fromStdString(param); QStringList arguments; arguments << p; proc->start(path, arguments);
The values of the vars at run time are:
+ p -listxml > mame.dat QString + param "-listxml > mame.dat" std::string + path C:\mame\mame64.exe QString
Now the weird thing.... The debug output:
>> Started ok "Error: unknown option: -listxml > mame.dat\r\n" >>>>> Exit Code: QProcess::NormalExit Program ran successfully
Where did the "\r\n" come from ? And how do I actually pass a arg to an exe to tell it to pipe in QProcess? And yes, that command via dos works fine. Can 't use a batch file before you ask because this programme will be put up on github and free to use, including source, so that means the end user won't have a batch file there. Hmmm
-
Piping is a bash feature. So either start a bash shell or read the data from stdout and write it to your second process.
-
@jonndoe47
As @Christian-Ehrlicher says, except that I doubt you'll havebash
as you have a.exe
so are probably under Windows :) It always helps to state OS when askingQProcess
questions....The shortest, dirtiest answer is you need to go
process->start("cmd", QStringList() << "/c" << "C:\\mame\\mame64.exe -listxml > mame.dat")
Nicer here would be to use QProcess::setStandardOutputFile on
mame.dat
which you have previously opened for output as aQFile
yourself in caller. Then you can go back to running"C:\\mame\\mame64.exe"
as the executable (and pass-listxml
argument). But that's more lines of code (only a couple, you can do that can't you?).