Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как клонировать процесс?

01.01.2007
{ 
  In Linux it is possible to duplicate a process with fork. In the original 
  process, fork will return the handle to the duplicated process. The 
  duplicated process will return zero. 
} 
 
program TestFork; 
 
{$APPTYPE CONSOLE} 
 
uses 
  SysUtils, 
  Libc; 
 
var 
  ForkedProcessHandle: __pid_t; 
  bForked: Boolean; 
 
procedure ForkNow; 
begin 
  bForked := true; 
  ForkedProcessHandle := fork; 
end; 
 
function IsForked: Boolean; 
begin 
  Result := (ForkedProcessHandle = 0) and bForked; 
end; 
 
var 
  Lf: Integer; 
 
begin 
  sigignore(SIGCHLD); 
  bForked := false; 
 
  WriteLn('do some stuff'); 
 
  WriteLn('before fork'); 
  ForkNow; 
  WriteLn('after fork - we have dublicated the process'); 
 
  if IsForked then begin 
    WriteLn('do some stuff in forked process (wait 5s)'); 
    for Lf := 0 to 50 do begin 
      Write('f'); 
      sleep(100); 
    end; 
  end else begin 
    WriteLn('do stuff in original process (wait 10)'); 
    for Lf := 0 to 100 do begin 
      Write('o'); 
      sleep(100); 
    end; 
  end; 
 
  WriteLn; 
 
  if IsForked then 
    WriteLn('forked process end') 
  else 
    WriteLn('original process end'); 
end. 
 
 
{ 
Output of this demo app: 
 
do some stuff 
before fork 
after fork - we have dublicated the process 
after fork - we have dublicated the process 
do some stuff in forked process (wait 5s) 
fdo stuff in original process (wait 10) 
ooffooffooffooffooffooffooffooffooffooffooffooffooffooffooffooffooffooff 
ooffooffooffooffooffooffooffoo 
forked process end 
ooooooooooooooooooooooooooooooooooooooooooooooooo 
original process end 
} 

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php