| 381 | |
| 382 | |
| 383 | MznProcess::RunResult MznProcess::run(const QStringList& args, const QString& cwd) |
| 384 | { |
| 385 | Q_ASSERT(p.state() == QProcess::NotRunning); |
| 386 | p.setWorkingDirectory(cwd); |
| 387 | const QStringList& exec = MznDriver::get().minizincExecutable(); |
| 388 | QStringList execArgs = args; |
| 389 | for (unsigned int i = exec.size() - 1; i > 0; i--) { |
| 390 | execArgs.push_front(exec[i]); |
| 391 | } |
| 392 | p.start(exec[0], execArgs, MznDriver::get().mznDistribPath()); |
| 393 | if (!p.waitForStarted()) { |
| 394 | throw ProcessError(QString("Failed to find or start %1 %2 in '%3'.") |
| 395 | .arg(exec[0]) |
| 396 | .arg(args.join(" ")) |
| 397 | .arg(MznDriver::get().mznDistribPath()) |
| 398 | ); |
| 399 | } |
| 400 | if (!p.waitForFinished()) { |
| 401 | p.terminate(); |
| 402 | } |
| 403 | return { p.exitCode(), p.readAllStandardOutput(), p.readAllStandardError() }; |
| 404 | } |
| 405 | |
| 406 | |
| 407 | MznProcess::RunResult MznProcess::run(const SolverConfiguration& sc, const QStringList& args, const QString& cwd) |