Das ist nicht der aktuelle Code. Die COMSPEC Variable muss gesetzt sein. Siehe Beitrag #48.
C:
if (getenv("SERVER_NAME") != NULL) {
char env[256];
sprintf(env, "COMSPEC=%s%c%c",
getenv("COMSPEC"), '\0', '\0');
PROCESS_INFORMATION piA;
STARTUPINFO suiA;
// dieses Programm als Kindprozess starten, mit CreateProcess(argv[0],NULL,NULL,NULL,FALSE,CREATE_DEFAULT_ERROR_MODE|NORMAL_PRIORITY_CLASS,env,NULL,&suiA,&piA);
} else {}
Er beendet meine test.exe, aber die APache.exe läuft weiter. Ich hatte dann überlegt, nach dem CreateProcess(); nochmal meine test.exe aufzurufen mit system(argv[0]); aber dann startet er immer wieder die test.exe und kommt sozusagen in eine Endlosschleife, weil er jedesmal in den if-Zweig reingeht.Wenn ein Programm als CGI Programm ausgeführt wird, sind bestimmte Umgebungsvariablen gesetzt (z.B. REMOTE_ADDR). So kann man feststellen, ob das aktuelle Programm als CGI Programm ausgeführt wird.
Wenn man dann einen Kindprozeß erzeugen will der nicht als CGI Programm ausgeführt werden soll, muss man dann natürlich sicherstellen, dass in diesem Prozess die CGI Variablen nicht gesetzt sind. Dazu werden neue Umgebungsvariablen an den Kindprozess übergeben.
Gruß
Was mache ich falsch bzw. was müsste ich nach CreateProcess() noch ausführen?
Gruß