Скачиваний:
17
Добавлен:
08.01.2014
Размер:
1.25 Кб
Скачать
(* рТПЗТБННБ synchro -- РТЙНЕТ ЙУРПМШЪПЧБОЙС ЧЩЪПЧБ kill *)
uses linux,stdio;

const
ntimes:integer=0;

procedure p_action(sig:integer);cdecl;
begin
inc(ntimes);
writeln ('тПДЙФЕМШУЛЙК РТПГЕУУ РПМХЮЙМ УЙЗОБМ ', ntimes, ' ТБЪ(Б)');
end;

procedure c_action(sig:integer);cdecl;
begin
inc(ntimes);
writeln ('дПЮЕТОЙК РТПГЕУУ РПМХЮЙМ УЙЗОБМ ', ntimes, ' ТБЪ(Б)');
end;


var
pid, ppid:longint;
pact, cact:sigactionrec;
begin
(* ъБДБФШ ПВТБВПФЮЙЛ УЙЗОБМБ SIGUSR1 Ч ТПДЙФЕМШУЛПН РТПГЕУУЕ *)
pact.handler.sh := @p_action;
sigaction (SIGUSR1, @pact, nil);

pid := fork;
case pid of
-1: (* ПЫЙВЛБ *)
begin
perror ('synchro');
halt(1);
end;
0: (* ДПЮЕТОЙК РТПГЕУУ *)
begin
(* ъБДБФШ ПВТБВПФЮЙЛ Ч ДПЮЕТОЕН РТПГЕУУЕ *)
cact.handler.sh := @c_action;
sigaction (SIGUSR1, @cact, nil);
(* рПМХЮЙФШ ЙДЕОФЙЖЙЛБФПТ ТПДЙФЕМШУЛПЗП РТПГЕУУБ *)
ppid := getppid;
while true do
begin
sleep (1);
kill (ppid, SIGUSR1);
pause;
end;
(* вЕУЛПОЕЮОЩК ГЙЛМ *)
end;
else (* ТПДЙФЕМШУЛЙК РТПГЕУУ *)
while true do
begin
pause;
sleep (1);
kill (pid, SIGUSR1);
end;
(* вЕУЛПОЕЮОЩК ГЙЛМ *)
end;
end.
Соседние файлы в папке 6