{ -*- mode:delphi; -*- $Id: fork.pas 11 2004-04-19 19:44:50Z dfox $ }
uses linux,strings;
var
   utsrec:utsname; { struktura pro uname(3) }
   pid: integer;
   status: LongInt;
begin
   uname(utsrec); { zjistíme si na čem jsme }
   writeln('OS: ',StrPas(utsrec.sysname),' ',StrPas(utsrec.release));
   pid:=fork;
   { pid obsahuje pid dceřiného procesu v procesu rodičovském, nulu v
     procesu dceřiném, nebo -1 v případě chyby }
   if pid=-1 then begin
      writeln('Chyba při vytváření procesu.');
      halt(1); { Ukončíme program }
   end;
   if pid=0 then begin
      writeln('Dceřiný proces, PID rodiče:',GetPPID);
      writeln('Stiskni RETURN...');
      readln();
      writeln('Dceřiný proces končí s návratovou hodnotou 0');
      halt(0);
   end;
   writeln('Rodičovký proces, PID potomka:',pid);
   writeln('Čekám na potomka...');
   WaitPID(pid, @status, 0);
   writeln('Potomek skončil s návratovou hodnotou:',status);
end.
