Добавил:
Mendeleev
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
(* рТПЗТБННБ 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.
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