функции С и C++, библиотек C++Builder, API Windows________________877

При аварийном завершении порожденного процесса биты его статуса означа-
ют:

биты 0-7         1                         неисправимая ошибка

2                         генерация исключения

3                         прерывание внешним сигна-
лом

биты 8-15        Нули

При нормальном завершении функция wait возвращает идентификатор по-
рожденного процесса. При неудаче возвращается -1, а переменная еггпо равна
EINTR — ненормальное завершение процесса, или ECHILD — порожденного про-
цесса нет.

Функция cwait подобна wait, но дает большую гибкость. Помимо параметра
statloc, рассмотренного выше она имеет еще два параметра: pid и action. Если па-
раметр pid задан равным 0, это означает, что происходит ожидание окончания лю-
бого порожденного процесса. Но в качестве значения pid может быть задан иденти-
фикатор конкретного порожденного процесса. Тогда происходит ожидание завер-
шения именно указанного процесса.

Параметр action может принимать одно из двух значений: WAIT_CHILD —
ожидание окончания указанного дочернего процесса, или WAIT_GRANDCHILD —
ожидание окончания не только самого порожденного процесса, но и всех дочерних
процессов, порожденных им.

Теперь можно рассмотреть функции spawn... . Они подобны рассмотренным
функциям ехес..., но обладают более широкими возможностями благодаря нали-
чию параметра mode, задающего режим выполнения порождаемого процесса. Этот
параметр может принимать следующие значения:

P_WAIT     Родительский процесс ждет завершения порожденного процесса,
после чего продолжается выполнение родительского процесса

P_NOWAIT Родительский процесс продолжает выполняться пока выполняет-
ся порожденный процесс. Поскольку функция возвращает ID по-
рожденного процесса, можно применить функцию cwait или
wait, чтобы обеспечить ожидание завершения порожденного про-
цесса. Этот режим недоступен в 16-разрядных Windows и DOS

P_NOWAITO Идентичен P_NOWAIT, но ID порожденного процесса не сохра-
няется операционной системой, так что применение функций
cwait или wait невозможно

P_DETACH  Идентичен P_NOWAITO, но порожденный процесс выполняется
в фоновом режиме, так что не имеет доступа к клавиатуре и дис-
плею

P_OVERLAY Порождаемый процесс замещает в памяти родительский. То же,
что вызов соответствующей функции ехес...

Приведем пример. Операторы

if(spawnip(P_WAIT,"arj","arj","e doc.arj al.txt", NULL))
ShowMessage("Программа arj не выполнена");

else
f
Memol->Clear();