uses linux,stdio;

(* Первый пример работы с каналами *)
const
  MSGSIZE=16;

(* Эти строки заканчиваются нулевым символом *)
  msg1:array [0..MSGSIZE-1] of char = 'hello, world #1';
  msg2:array [0..MSGSIZE-1] of char = 'hello, world #2';
  msg3:array [0..MSGSIZE-1] of char = 'hello, world #3';

var
  inbuf:array [0..MSGSIZE-1] of char;
  fdr,fdw,j:longint;
begin
  (* Открыть канал *)
  if not assignpipe(fdr,fdw) then
  begin
    perror ('Ошибка вызова pipe');
    halt (1);
  end;
  (* Запись в канал *)
  fdwrite (fdw, msg1, MSGSIZE);
  fdwrite (fdw, msg2, MSGSIZE);
  fdwrite (fdw, msg3, MSGSIZE);
  (* Чтение из канала *)
  for j := 1 to 3 do
  begin
    fdread (fdr, inbuf, MSGSIZE);
    writeln(inbuf);
  end;
  halt (0);
end.
