Системное программирование в UNIX средствами Free Pascal


         

Если мы оказались здесь, то


     *)
    writeln ('Потомок ',getpid,' пауза...');
    sleep(4);
    halt(5);                (* выход с ненулевым значением *)
  end;
  (* Если мы оказались здесь, то это родительский процесс *)
  (* Проверить, закончился ли дочерний процесс, и если нет,  *)
  (* то сделать секундную паузу, и потом проверить снова     *)
  while (waitpid (pid, @status, WNOHANG) = 0) do
  begin
    writeln ('Ожидание продолжается...\n');
    sleep(1);
  end;
  (* Проверка статуса завершения дочернего процесса *)
  if WIFEXITED (status) then
  begin
    exit_status := WEXITSTATUS (status);
    writeln ('Статус завершения ',pid,' равен ', exit_status);
  end;
  halt(0);
end.
При запуске программы получим следующий вывод:
Ожидание продолжается...
Потомок 12857 пауза...
Ожидание продолжается...
Ожидание продолжается...
Ожидание продолжается...
Статус завершения 12857 равен 5

Содержание  Назад  Вперед