環境変数の指定は?
CreateProcess で新しいプロセスを作る時に、新しい環境変数を1つだけ加えたいのだが、lpEnvironment の仕様がよくわからんので、ウェブページをあちこち行ったり来たりしていたのだが、1つ妙案が思い浮かぶ。
SetEnvironmentVariable で現在のプロセスに追加してから継承させればいいじゃん。(どうせ親プロセスはすぐに終了する予定だったし。)
ということで、こうなった:
#define UNICODE #include <windows.h> int main() { SetEnvironmentVariable( L"ZZ", L"日本語"); STARTUPINFO startInfo = {sizeof(STARTUPINFO)}; PROCESS_INFORMATION procInfo; BOOL nerr = CreateProcessW( L"C:\\cygwin\\bin\\bash.exe", L"C:\\cygwin\\bin\\bash.exe --login -i", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &startInfo, &procInfo); if (nerr) { CloseHandle(procInfo.hThread); CloseHandle(procInfo.hProcess); } return 0; }
ソースはUTF-8(BOMなし)。コンパイルはCygwinから g++ -mno-cygwin -mwindows。
日本語の環境変数がどうなるかはまだ未検証。