Prozessmanagement
-
Hallo,
nein, der Prozess, der das Programm aufruft wartet nur, bis das Programm fertig ist, um es dann erneut aufzurufen.
Habs jetzt mal mit SetPriorityClass(...) versucht:if ( CreateProcess( EXE, // auszuführende Datei mit vollst. Pfad argumente, // Kommandozeilenargumente NULL, NULL, true, CREATE_DEFAULT_ERROR_MODE, NULL, PFAD, // Pfad, indem das auszuführende Programm liegt &start_info, // StartupInfo &proc_info // erhält Infos über den aufgerufenen Prozess ) == 0 ) { printf("Fehler beim Starten des Programms\n"); exit (1); } HANDLE hprocess = proc_info.hProcess; unsigned long ExitCode; if ( SetPriorityClass(hprocess, HIGH_PRIORITY_CLASS) == NULL) { printf("Prioritaet konnte nicht erhoeht werden!\n"); exit (1); }
So klappt das auch und geht viel schneller, nur das dann sonst überhaupt nichts mehr geht bis das Programm beendet ist. Da ich ME hab und das Prog auch auf NT laufen sollte, geht ein kleinerer Level als HIGH_PRIORITY_CLASS nicht.
Bei SetThreadPriority(...) hab ich das Problem, dass THREAD_SET_INFORMATION gesetzt sein muss. Hab mir das mal angeschaut, aber kapier leider nicht, wie das genau geht. Hat das jemand schonmal benutzt oder kann mir sagen, wie ich das machen muss? Bei SetThreadPriority(...) könnte ich die Prioritaet wohl stufenweise erhöhen und schauen, was am besten passt.
Danke für eure Hilfe!
MFG
Barney
-
nicht böse gemeint - aber gehört das nicht mehr nach WinAPI? die leute da sollte mehr drüber wissen
-
ok, werds da mal versuchen...
Danke nochmals!
-
Barney schrieb:
Hallo,
nein, der Prozess, der das Programm aufruft wartet nur, bis das Programm fertig ist, um es dann erneut aufzurufen.zeig mal wie es wartet. wenn du's anders machst als mit 'WaitForSingleObject()' könnte es schon wertvolle rechenzeit verballern
-
mach es so:
// Auf Prozessende warten do if (!GetExitCodeProcess(hprocess, &ExitCode)) { printf("Prozess konnte nicht gefunden werden\n"); exit(1); } while (ExitCode == STILL_ACTIVE);
-
Hey Leute, hier geht es nur um ANSI C! Stell euere Fragen und Antworten in richtigen Forum
-
Barney schrieb:
// Auf Prozessende warten do if (!GetExitCodeProcess(hprocess, &ExitCode)) { printf("Prozess konnte nicht gefunden werden\n"); exit(1); } while (ExitCode == STILL_ACTIVE);
aha
die do/while-schleife verbläst cpu-cycles ohne ende.
mach es so ungefähr:WaitForSingleObject (hprocess, INFINITE);
supertux schrieb:
Hey Leute, hier geht es nur um ANSI C! Stell euere Fragen und Antworten in richtigen Forum
wie heisst das zauberwort?
-
net schrieb:
wie heisst das zauberwort?
SOFORT!
-
supertux schrieb:
net schrieb:
wie heisst das zauberwort?
SOFORT!
aufgrund eures gemeckers läuft die diskussion jetzt in zwei threads ab, einmal hier und einmal im winapi-forum. anstatt zu warten bis ein mod das verschiebt... tztztz...
-
oki, so klappts auch!
Muchas gracias!
MFG
Barney