出力をリダイレクトできるように、spawnvp()を使用してコマンドを実行する必要があります。私の問題は、argv がないことですが、コマンド全体を含む文字列だけなので、分割する必要があります。残念ながら、生成した argv を関数に渡すと例外が発生しました。
このようにするとうまくいきます:
char* argv[2];
argv[0] = "kzip";
argv[1] = NULL;
これは私がやっている方法ですが、失敗しています:
char** argv2 = (char**)malloc(sizeof(char*) * 2);
argv2[0] = "kzip";
argv2[1] = NULL;
これは私がspawnvp()を呼び出す方法です:
hProcess = (HANDLE)spawnvp(P_NOWAIT, argv2[0], (const char* const*)&argv2);
char[] と char* の間にいくつかの違いがあることは知っていますが、char** の代わりに動的に作成された char*[] を作成する方法がわかりません。