On Wednesday 06 August 2014 23:19:49 achart...@fastmail.fm wrote: > Hello, > > I am trying to find the proper way to gracefully exit a QProcess. The > particular process that I am running does some work and then is in a > waiting state, exiting only when the user presses the Enter key. This > works fine when the executable is run from the command line.
This is not a question about Qt's own development. Please use the interest mailing list next time. (and drop dev@ when replying to this email) > The problem I am having is that every way I have tried to stop the > QProcess results in the error signal being emitted; in such cases, > errorString() always returns "Process crashed". I have tried: > > (1) Calling QProcess::terminate() > (2) Calling QProcess::kill() Those send a signal to the process, which means it will understand the process as crashed. That's normal. If the target process gracefully handles SIGTERM, then you can use it. > (3) Writing the return key to the process with QProcess::write("\r") and > QProcess::write("\\r) As Ossi said, you need to verify that the byte was actually sent. Use waitForBytesWritten or waitForFinished() to ensure it has finished. Also, please make sure that the process is actually waiting for a Carriage Return. I doubt that it is. The Enter key in a terminal does send a CR, but the terminal translates it to a LF for the application. So you should try sending "\n" instead. > (4) Sending a Qt::Key_Return using qApp->sendEvent() to the QProcess > object (though it's not clear to me that QKeyEvents sent to the QProcess > get automatically forwarded to the executable they have spawned). That doesn't do anything. QProcess is not a graphical widget, so it doesn't handle key events. Option (5): closeWriteChannel(). Most shell processes terminate execution when they get an EOF on stdin. > In summary, how can I stop this QProcess properly without having the > error signal emitted? -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development