程序中需要调用外部SqlFormatter.exe来格式化SQL脚本,该程序从命令行读取配置参数。
调用waitForStarted执行ok
调用waitForBytesWritten,返回值为false,QProcess::ProcessError为5,即QProcess::UnknownError。
调用waitForFinished,函数超时,且SqlFormatter.exe进程掉死。
网上搜索无解,最终尝试在start之后立即调用closeWriteChannel,问题解决(即SqlFormatter.exe进程结束,基本功能正常)。但最终打印输出的是:
waitForFinished OK, Process error5
QString app = tr("./SqlFormatter.exe");
QStringListargs;
args<< sqlFilePathList.at(index) << tr("-b-") <<tr("-is= ");
//QProcess::startDetached(app, args);
QProcess*process = new QProcess;
process->start(app, args);
process->closeWriteChannel();
process->waitForStarted();
if(!process->waitForFinished())
{
if(enableDebug)
{
sqlError->append(tr("waitForFinished NOK, Process error%1").arg(process->error()));
}
}
else
{
if(enableDebug)
{
sqlError->append(tr("waitForFinished OK, Process error%1").arg(process->error()));
}
}
delete process;