2010-11-24 29 views
0

Qt4には、新しく生成プロセスのEnv変数を設定するためのQProcess :: setProcessEnvironment()があります。startDetached()の環境変数を設定するQProcess

ただし、QProcess :: startDetached()は静的メンバー関数なので、setProcessEnvironment()は適用されません。 Qtで分離されたプロセスのEnv変数はどのように設定されますか?

答えて

2

既知の古いバグ:http://bugreports.qt-project.org/browse/QTBUG-2284です。あなた自身の環境をサポートするために関数startDetachedをオーバーロードする必要があります。どのようにそれを行うには、Qtのソースを見てください:http://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/io?h=5.5qprocess*ファイル)。

+0

)があるが、問題を解決することができるはず、この明日しようとします。このバグがどれくらい長く続いたかを知ることは驚きです。ユーザコードにputenv()を呼び出さなければならないのは醜いです。これはQtで行われているはずです。 –

+0

そして明らかにこのバグは修正されていません。私はQt 4.8.4を使用しており、同じ問題を抱えています。私のQtアプリケーションから外部コンソールアプリケーションを起動しようとしていて、コンソールウィンドウを見たいと思っていますが、そのプロセスのさまざまな環境設定をする必要があります。 – Jeff

0

Qt5.5を使用すると、この問題が発生します。

下のWin7では、下のコードを使用し、父のプロセスで環境を設定します。サブプロセスは環境を継承しているようです。確かではないが、それは私の場合に働いた。

希望より良いソリューションstartDetachedを(オーバーライド

QString oldPath = qgetenv("Path"); 
QByteArray newPath = (QCoreApplication::applicationDirPath() + ";" + oldPath).toLocal8Bit(); 
bool bSet = qputenv("Path", newPath); 
if (!bSet) 
{ 
    qDebug()<<"Failed"; 
} 
関連する問題