[英]If setProcessEnvironment the QProcess will not run
我有一段簡單的代碼可以運行一個外部腳本(見下文)。 該代碼運行良好。 現在,我想在運行腳本之前設置一個環境變量。 當我這樣做時,waitForStarted方法失敗,錯誤代碼為0 ,錯誤字符串為“ Exec format error ”。
我簡化了代碼,只需調用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設置為“ /tmp/myscript.sh”,參數為空的QStringList
我發現Qt中似乎有一個令人討厭的錯誤。 我正在啟動的程序是一個bash腳本,並且文件頂部沒有#!/ bin / bash行。
由於某些原因,在不設置環境的情況下,Qt運行文件沒有問題。 但是,一旦設置了環境,只有擁有#!才能運行! 文件頂部的一行。 設置環境以某種方式改變了Qt執行文件的方式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.