QProcess启动失败:文件名或扩展名太长



我有一个问题,这是我的代码

QProcess *process = new QProcess(this);
process->setEnvironment(QProcess::systemEnvironment());
process->setStandardErrorFile(getAbsolutePath("logs")+"mylog.log",QIODevice::Append);
process->setProgram(program);
process->setArguments(arguments);
//loop is a QEventLoop
loop.connect(process, SIGNAL(finished(int, QProcess::ExitStatus)),
     this, SLOT(finalProcess(int, QProcess::ExitStatus)));
process->start();
qDebug()<<process->program()<<process->arguments();
if(!process->waitForStarted(3600000)) {
    myLog.addMessage(process->program()+" "+process->errorString());
}
loop.exec();
process->close();
delete process;
process = NULL;

这段代码是一个在循环中调用的函数,它只工作n次(例如,我需要做n= 100,但代码在n=17时崩溃),直到崩溃输出(process->errorString())

QProcess failed to start:文件名或扩展名太长。

然后我改变了其他更短的路径,我看到n在崩溃之前会更高,我做了更多的QProcess,但不是全部。

我不明白为什么我不能做一些无限的QProcess,如果我想,我总是等待每一个我的QProcess与我的QEventLoop完成。有人知道解决办法吗?

非常感谢

最后我解决了我的问题,我不明白为什么QProcess输出是"文件名或扩展名太长。"它是"QProcess::systemEnvironment()"每次函数运行时都在增加。我在程序的另一部分有一个putenv函数。结论:"文件名或扩展名太长"是因为windows无法在系统环境中增加更多的路径。

非常感谢大家

相关内容

最新更新