uses linux,strings;

(* Функция itoa - преобразует целое число в строку *)
function itoa(i:integer;str:pchar):integer;
var
  power, j : integer;
begin
  j := i;
  power := 1;
  while j >= 10 do 
  begin
    power := power * 10;
    j := j div 10;
  end;
  while power > 0 do
  begin
    str^ := char(byte('0') + i div power);
    inc(str);
    i := i mod power;
    power := power div 10;
  end;
  str^ := #0;
end;


const
  num:integer=0;
  namebuf:array [0..19] of char='';
  prefix='/tmp/tmp';

function gentemp:pchar;
var
  length:integer;
  pid:longint;
begin
  pid := getpid;		(* получить идентификатор процесса *)

  (* Стандартные процедуры работы со строками *)
  strcopy (namebuf, prefix);
  length := strlen (namebuf);

  (* Добавить к имени файла идентификатор процесса *)
  itoa (pid, @namebuf[length]);
  strcat (namebuf, '.');
  length := strlen (namebuf);
  repeat
    (* Добавить суффикс с номером *)
    itoa(num, @namebuf[length]);
    inc(num);
  until(not access (namebuf, F_OK));
  gentemp:=namebuf;
end;

begin
  writeln('Temp file #1: ', gentemp);
  writeln('Temp file #2: ', gentemp);
end.
