pamire |
2016-05-18 11:36 |
解法方法: 1. 用exec,execl, execv等 #include <uniSTd.h> int execl(cONst char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]);
"/mnt/nfs/bin/UpdateQt /mnt/nfs/bin/update.zip" QLock::lock(): Invalid argument QLock::unlock(): Unlock without corresponding lock QLock::lock(): Invalid argument QLock::unlock(): Unlock without corresponding lock QLock::lock(): Invalid argument QLock::unlock(): Unlock without corresponding lock 用execl出现上面调用失败信息
2.改进调用QProgress int IClient::DoUnzip() { #ifdef _WIN32 QString progra = QString("%1/UpdateQt.exe").arg(g_env.filePathInfo.strAppPath); #else QString progra = QString("%1/UpdateQt").arg(g_env.filePathInfo.strAppPath); #endif QStringList arguents; arguents << _sUpdatePackNae;
QDir::setCurrent(g_env.filePathInfo.strAppPath); QProcess *myProcess = new QProcess(0); myProcess->setWorkingDirectory(g_env.filePathInfo.strAppPath); myProcess->start(progra, arguents);
while (! myProcess->waitForFinished(300)) { if (myProcess->state() == QProcess::NotRunning) { //process failed printf("NotRunning\n"); return -1; } qApp->processEvents(); }
if (myProcess->exitCode() != 0) { //error when run process printf("exitCode\n"); return false; }
POST_ESSAGE( new IEvent(QVariant(0), (QEvent::Type)W_APP_QUIT));
return 0; } B程序不用改动,改进QProgress,则可正常调用B程序.
|
|