如果setProcessEnvironment,QProcess将不会运行

时间:2014-03-15 23:46:15

标签: c++ qt exec environment qprocess

我有一段运行外部脚本的简单代码(见下文)。代码运行得很好。现在我想在运行脚本之前设置一个环境变量。当我这样做时,waitForStarted方法失败,错误代码 0 和errorString" 执行格式错误"。

我简化了我的代码,只需调用setProcessEnvironment即可重现错误。在下面的代码中,如果我注释掉第三行它运行得很好。如果我取消注释第三行,我会得到上面提到的错误。有人可以解释为什么简单地将环境设置回原来会导致此错误吗? (在Linux上运行,如果重要,使用Qt 5.1.0)。

QProcess command;
QProcessEnvironment oldenvironment = QProcessEnvironment::systemEnvironment();
// If I comment out next line it runs fine!
command.setProcessEnvironment(oldenvironment);

command.start(commandpath, parameters);
if (command.waitForStarted(START_WAIT_TIME)) {
   qDebug() << "Started ok";
} else {
    qDebug() << "*** start error code: " << command.error();
    qDebug() << "*** start error string: " << command.errorString();
}

同样,commandpath设置为&#34; /tmp/myscript.sh"和参数是一个空的QStringList

1 个答案:

答案 0 :(得分:0)

我发现在Qt中似乎是一个有趣的错误。我启动的程序是一个bash脚本,我没有文件顶部的#!/ bin / bash行。

出于某种原因,在没有设置环境的情况下,Qt运行文件没有问题。但是一旦我设置了环境,它只会在我拥有#时运行!行顶部的文件。以某种方式设置环境改变了Qt执行文件的方式....