Moin zusammen,
ich suche nach einer Möglichkeit, ein anderes Programm aus dem eigentlichen Programm heraus aufzurufen, das dann auch die Beendigung des eigentlichen Programms wartet. Also in etwa so:
p1 ruft p2 auf. p2 wartet auf Beenden von p1. p1 beendet sich. p2 ersetzt das binary von p1. p2 ruft p1(neu) auf.
Ich habe das unter GNU/Linux problemlos mit system() gemacht, allerdings habe ich hier unter Windows das Problem, dass ich beim löschen des alten binarys errno13 bekomme, also Zugriff verweigert. Ich gehe davon aus (ich weiß es nicht), dass system() offenbar das beenden des Programmes verhindert, da es blockiert(?).
Diese Schleife ist momentan wohl endlos, jedenfalls ist sie selbst nach mehreren Sekunden noch nicht beendet. PortableSleep() ruft für Windows lediglich Sleep() auf.
Daher meine Frage: Wie kann ich das lösen? Gibt es in der Win32-API "sowas" wie system(), das nicht blockiert bzw. blockiert dies überhaupt? Könnte ich dann dem anderen Programm die ProzessID übergeben und dann warten, ob das Programm schon beendet ist? Meine Kenntnisse bzgl. der Win32-API sind nicht gerade ausgeprägt (~0).
Vielen Dank.
Gruß,
badday
ich suche nach einer Möglichkeit, ein anderes Programm aus dem eigentlichen Programm heraus aufzurufen, das dann auch die Beendigung des eigentlichen Programms wartet. Also in etwa so:
p1 ruft p2 auf. p2 wartet auf Beenden von p1. p1 beendet sich. p2 ersetzt das binary von p1. p2 ruft p1(neu) auf.
Ich habe das unter GNU/Linux problemlos mit system() gemacht, allerdings habe ich hier unter Windows das Problem, dass ich beim löschen des alten binarys errno13 bekomme, also Zugriff verweigert. Ich gehe davon aus (ich weiß es nicht), dass system() offenbar das beenden des Programmes verhindert, da es blockiert(?).
Code:
int i=1;
for(;i!=0;)
{
i = remove(updatepath.c_str());
PortableSleep(30);
}
Daher meine Frage: Wie kann ich das lösen? Gibt es in der Win32-API "sowas" wie system(), das nicht blockiert bzw. blockiert dies überhaupt? Könnte ich dann dem anderen Programm die ProzessID übergeben und dann warten, ob das Programm schon beendet ist? Meine Kenntnisse bzgl. der Win32-API sind nicht gerade ausgeprägt (~0).
Vielen Dank.
Gruß,
badday