Скачиваний:
19
Добавлен:
08.01.2014
Размер:
1.19 Кб
Скачать
(* рТПЗТБННБ proc_file -- РПЧЕДЕОЙЕ ЖБКМПЧ РТЙ ЧЕФЧМЕОЙЙ *)
(* рТЕДРПМПЦЙН, ЮФП ДМЙОБ ЖБКМБ "data" ОЕ НЕОЕЕ 20 УЙНЧПМПЧ *)
uses linux,stdio;

procedure fatal(s:pchar);
begin
perror(s);
halt(1);
end;

(* чЩЧЕУФЙ РПМПЦЕОЙЕ Ч ЖБКМЕ *)
procedure printpos(_string:pchar;filedes:integer);
var
pos:longint;
begin
pos := fdseek (filedes, 0, SEEK_CUR);
if pos=-1 then
fatal ('пЫЙВЛБ ЧЩЪПЧБ lseek');
writeln(_string,':',pos);
end;


var
fd:integer;
pid:longint; (* ЙДЕОФЙЖЙЛБФПТ РТПГЕУУБ *)
buf:array [0..9] of char; (* ВХЖЕТ ДБООЩИ ДМС ЖБКМБ *)
begin
fd := fdopen ('data', Open_RDONLY);
if fd = -1 then
fatal ('пЫЙВЛБ ЧЩЪПЧБ open ');

fdread (fd, buf, 10); (* РЕТЕНЕУФЙФШ ЧРЕТЕД ХЛБЪБФЕМШ ЖБКМБ *)
printpos ('дП ЧЩЪПЧБ fork', fd);
(* уПЪДБФШ ДЧБ РТПГЕУУБ *)

pid := fork;
case pid of
1: (* ПЫЙВЛБ *)
fatal ('пЫЙВЛБ ЧЩЪПЧБ fork ');
0: (* РПФПНПЛ *)
begin
printpos ('дПЮЕТОЙК РТПГЕУУ ДП ЮФЕОЙС', fd);
fdread (fd, buf, 10);
printpos ('дПЮЕТОЙК РТПГЕУУ РПУМЕ ЮФЕОЙС', fd);
end;
else (* ТПДЙФЕМШ *)
begin
wait(nil);
printpos ('тПДЙФЕМШУЛЙК РТПГЕУУ РПУМЕ ПЦЙДБОЙС', fd);
end;
end;
end.
Соседние файлы в папке 5