# Problem mit CreateProcess()



## partitionist (19. Dezember 2006)

Ich habe eine Shell(Konsolenprogramm) so was cmd.exe, naja jedenfalls hab ich in der Shell noch eigene Programme(Befehle) beigelegt wie z.B. *shutdown*, *kill*.

Bisher habe ich alle Befehle mit system() ausgeführt, was mich stört ist, wenn ein Befehl der an system() übergeben wird, so wird automatisch von der Funktion die Typische cmd Fehlermeldung ausgegeben:



> Der Befehl "..." ist entweder falsch geschrieben oder konnte nicht gefunden werden



Um das zu verhindern will ich zu CreateProcess() wechseln, hierfür habe ich folgenden Code verwendet:


```
PROCESS_INFORMATION piProcessInfo;
    memset(&siStartupInfo, 0, sizeof(siStartupInfo));
    memset(&piProcessInfo, 0, sizeof(piProcessInfo));
    siStartupInfo.cb = sizeof(siStartupInfo);

    int stat = CreateProcess(NULL, 
                    Command,
                    0,
                    0,
                    TRUE,
                    NORMAL_PRIORITY_CLASS,
                    0,
                    0,
                    &siStartupInfo,
                    &piProcessInfo);

    CloseHandle(piProcessInfo.hProcess);
    CloseHandle(piProcessInfo.hThread);
```

Als ich dann damit die gleichen Befehle in der Konsole ausgeführt habe, habe festgestellt das die Befehle langsamer ausgegeben wurden als mit system().
Woran liegt das und habe ich optimale Parameter für Konsolenprozesse verwendet?


----------



## pschilling (11. April 2007)

Hi partitionist,

Anrede wäre nett ;-)

Versuchs doch mal mit einer höheren Priorität!

Statt NOMAL_PRIORITY_CLASS also HIGH_PRIORITY_CLASS

oder wenn du es ganz eilig hast REALTIME_PRIORITY_CLASS (würd ich aber von abraten ) ;-)


Und teste die ZeitDifferenz auch immer mit der releaseversion.

Schönen Gruß,

Peter


----------

