Using QProcess from a QTcpServer based class [SOLVED]
-
Hi,
I am trying to use a QProcess object from a QTcpServer based class, but when I try to detect the moment a process is done, it seems the signal finished() never is called. Here is a little piece of the code I am using:void InternetService::directoryContent(const QString &path) { process = new QProcess(this); process->start("/bin/ls", QStringList() << path); connect(process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(printDirectoryContent(int, QProcess::ExitStatus))); } void InternetService::printDirectoryContent(int exitCode, QProcess::ExitStatus exitStatus) { qDebug() << "Tracing this slot..."; }Any suggestion about how to make it work? Thanks!
-
Thank you!
Using the error() signal I could trace the problem.connect(process, SIGNAL(error(QProcess::ProcessError)), this, SLOT(processError(QProcess::ProcessError)));But, now I have a new question: How can I capture the output of the process in an accurate way? I was trying to use the readLine() method but all I get is a NULL pointer exception:
char *data = NULL; int size = process->readLine(data, 4);Any suggestion? Any small example to understand how to do it correctly? Thanks.
-
Even when the issue seems [SOLVED], if you're using 'ls' as the actual process to run (and not just as a simple example of how to use the QProcess() class) I would like to suggest you please consider using QDir and QFileInfo to deal with directories and files in a portable and platform independant way. See example [1] which may benefit your application in the future.