5 Stimmen

Wie verwendet man die win32 CreateProcess-Funktion, um zu warten, bis das Kind fertig ist, um in die Datei zu schreiben?

Hallo ich bin kein Win32-Programmierer und es ist alles neu für mich. Ich möchte den Prozess von meiner übergeordneten Win32-Anwendung öffnen (ok, das ist ich weiß, wie zu tun) das Kind Prozess dann schreiben, um Text-Datei und schließen Sie es selbst. wie kann ich erkennen, in der übergeordneten Anwendung, dass das Kind Anwendung getan Schreiben in die Textdatei. und dann von der übergeordneten app, um die Textdatei zu lesen. dies ist alles in win32 c++ Danke

5voto

Begemoth Punkte 1369

Die PROCESS_INFORMATION Struktur (die das letzte Argument von CreateProcess ist) enthält das Mitglied hProcess . Dies ist ein Handle auf den neuen Prozess, auf den Sie warten können, indem Sie WaitForSingleObject .

4voto

ralphtheninja Punkte 116647

Eine leichte Abwandlung von Benoits Antwort. Sie können ein Ereignis im übergeordneten Prozess erstellen und auf dieses Ereignis warten mit WaitForSingleObject . Dieses Ereignis kann dann vom Kind durch einen Aufruf der folgenden Funktion signalisiert werden SetEvent .

http://msdn.microsoft.com/en-us/library/ms686211%28v=vs.85%29.aspx

Es ist wichtig, dass der Kindprozess alle vererbbaren Handles erbt, daher muss der fünfte Parameter von CreateProcess auf true gesetzt werden (bInheritHandles).

Auf diese Weise muss der Kindprozess nicht beendet werden, damit Sie überprüfen können, ob die Datei geschrieben wurde.

0voto

Benoit Punkte 72929

Wenn Ihr Kind nach der Erstellung der Datei das Programm verlassen will, können Sie ::WaitForSingleObject unter Verwendung des Prozesshandles, das von ::CreateProcess .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X