problemchen mit CreateProcess
-
hola leute
folgendes problem:
ich hab hier ein programm das mir je nach kommandozeilenparameter in eine datei bestimmte daten reinschreibt.jetzt hab ich mir ein programm geschrieben, welches das programm mit parameter starten und dann die werte aus der datei lesen soll. die will ich dann in einer DB speichern.
klappt ansich alles wunderpraechtig, nur wird das starten des externen programms nach ca. 3000 aufrufen extrem langsam. ein aufrauf dauert dann schon einige sekunden. am anfang schafft er ca. 30 aufrufe pro sekunde.
hab folgende funktion dafuer geschrieben:
int CallExternApplication(char *t_filename) { STARTUPINFO info; PROCESS_INFORMATION pi; memset(&info, 0, sizeof(info)); info.cb = sizeof(info); info.wShowWindow = SW_HIDE; info.dwFlags = STARTF_USESHOWWINDOW; memset(&pi, 0, sizeof(pi)); if(!CreateProcess(NULL,t_filename, NULL,NULL,FALSE,0,NULL,NULL,&info,&pi)) return 0; WaitForSingleObject( pi.hProcess, INFINITE ); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return 1; }mit filename uebergebe ich den programmnamen mit parameter.
hab ich da vielleicht vergessen irgendwelche handle wieder freizugeben oder so ?
laeuft auf winxpauf meinem anderen rechner, der grad in reparatur ist, hab ich win2k drauf und da hatte ich, wenn ich mich recht erinnere nicht das problem gehabt.
Meep Meep
-
Ist schwer zu sagen was da so lange dauert, tippe mal auf was window-internes, deshalb würe ich mir an deiner stelle erst mal überlegen ob 30 program aufraufe in 1s wirklich im sinne des erfinders sind.
Das könnest aus diesem externem program z.b. ne dll machen und sie so bei dir im prozess halten, oder du machst nen server draus und connectest dich per pipes, sokets, ...