Qt4には、新しく生成プロセスのEnv変数を設定するためのQProcess :: setProcessEnvironment()があります。startDetached()の環境変数を設定するQProcess
ただし、QProcess :: startDetached()は静的メンバー関数なので、setProcessEnvironment()は適用されません。 Qtで分離されたプロセスのEnv変数はどのように設定されますか?
Qt4には、新しく生成プロセスのEnv変数を設定するためのQProcess :: setProcessEnvironment()があります。startDetached()の環境変数を設定するQProcess
ただし、QProcess :: startDetached()は静的メンバー関数なので、setProcessEnvironment()は適用されません。 Qtで分離されたプロセスのEnv変数はどのように設定されますか?
既知の古いバグ:http://bugreports.qt-project.org/browse/QTBUG-2284です。あなた自身の環境をサポートするために関数startDetached
をオーバーロードする必要があります。どのようにそれを行うには、Qtのソースを見てください:http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/io?h=5.5(qprocess*
ファイル)。
Qt5.5を使用すると、この問題が発生します。
下のWin7では、下のコードを使用し、父のプロセスで環境を設定します。サブプロセスは環境を継承しているようです。確かではないが、それは私の場合に働いた。
希望より良いソリューションstartDetachedを(オーバーライド
QString oldPath = qgetenv("Path");
QByteArray newPath = (QCoreApplication::applicationDirPath() + ";" + oldPath).toLocal8Bit();
bool bSet = qputenv("Path", newPath);
if (!bSet)
{
qDebug()<<"Failed";
}
)があるが、問題を解決することができるはず、この明日しようとします。このバグがどれくらい長く続いたかを知ることは驚きです。ユーザコードにputenv()を呼び出さなければならないのは醜いです。これはQtで行われているはずです。 –
そして明らかにこのバグは修正されていません。私はQt 4.8.4を使用しており、同じ問題を抱えています。私のQtアプリケーションから外部コンソールアプリケーションを起動しようとしていて、コンソールウィンドウを見たいと思っていますが、そのプロセスのさまざまな環境設定をする必要があります。 – Jeff