Как использовать функцию Win32 CreateProcess, чтобы дождаться, пока ребенок закончит запись в файл - PullRequest
4 голосов
/ 06 мая 2011

Здравствуйте, я не программист win32, и это все новое для меня.мне нравится открывать процесс из моего родительского приложения win32 (хорошо, я знаю, как это сделать), дочерний процесс затем записывает в текстовый файл и закрывает его самостоятельно.Как я могу обнаружить в родительском приложении, что дочернее приложение завершило запись в текстовый файл.а затем из родительского приложения, чтобы прочитать текстовый файл.это все в win32 c ++ спасибо

Ответы [ 3 ]

5 голосов
/ 06 мая 2011

Структура PROCESS_INFORMATION (которая является последним аргументом CreateProcess) содержит элемент hProcess. Это дескриптор нового процесса, который можно подождать, используя WaitForSingleObject.

4 голосов
/ 06 мая 2011

Небольшая модификация ответа Бенуа. Вы можете создать событие в родительском процессе и ждать этого события с помощью WaitForSingleObject . Затем это событие может быть передано ребенком через вызов SetEvent .

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

Важно, чтобы дочерний процесс наследовал все наследуемые дескрипторы, поэтому для CreateProcess должен быть установлен пятый параметр true (bInheritHandles).

Таким образом, дочерний процесс не должен завершаться, чтобы вы могли проверить, что файл записан.

0 голосов
/ 06 мая 2011

Если ваш ребенок выйдет после создания файла, вы можете использовать ::WaitForSingleObject, используя дескриптор процесса, возвращаемый ::CreateProcess.

...