Скачиваний:
17
Добавлен:
08.01.2014
Размер:
1.34 Кб
Скачать
uses linux,stdio;

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


var
pid:longint;
status, exit_status, sig_no:integer;
begin
pid := fork;
if pid < 0 then
fatal ('пЫЙВЛБ ЧЩЪПЧБ fork ');
if pid = 0 then (* РПФПНПЛ *)
begin
(* чЩЪПЧ ВЙВМЙПФЕЮОПК РТПГЕДХТЩ sleep
* ДМС РТЙПУФБОПЧЛЙ ЧЩРПМОЕОЙС ОБ 20 УЕЛХОД
*)
writeln ('рПФПНПЛ ',getpid,', РБХЪБ 20 УЕЛХОД ...');
sleep(20);
halt(5); (* ЧЩИПД У ОЕОХМЕЧЩН ЪОБЮЕОЙЕН *)
end;
(* еУМЙ НЩ ПЛБЪБМЙУШ ЪДЕУШ, ФП ЬФП ТПДЙФЕМШУЛЙК РТПГЕУУ *)
pid := wait (@status);
if pid = -1 then
begin
perror ('пЫЙВЛБ ЧЩЪПЧБ wait');
halt(1);
end;
(* рТПЧЕТЛБ ОПТНБМШОПЗП ЪБЧЕТЫЕОЙС ДПЮЕТОЕЗП РТПГЕУУБ *)
if WIFEXITED (status) then
begin
exit_status := WEXITSTATUS (status);
writeln ('уФБФХУ ЪБЧЕТЫЕОЙС ',pid,' ВЩМ ', exit_status);
end;
(* рТПЧЕТЛБ, РПМХЮЙМ МЙ ДПЮЕТОЙК РТПГЕУУ УЙЗОБМ *)
if WIFSIGNALED (status) then
begin
sig_no := WTERMSIG (status);
writeln ('уЙЗОБМ ОПНЕТ ',sig_no,' ЪБЧЕТЫЙМ РТПГЕУУ ', pid);
if WCOREDUMP (status) then
writeln ('... УПЪДБО ЖБКМ ДБНРБ РБНСФЙ');
end;
(* рТПЧЕТЛБ ПУФБОПЧЛЙ ДПЮЕТОЕЗП РТПГЕУУБ. *)
if WIFSTOPPED (status) then
begin
sig_no := WSTOPSIG (status);
writeln ('уЙЗОБМ ОПНЕТ ',sig_no,' ПУФБОПЧЙМ РТПГЕУУ ', pid);
end;
halt(0);
end.
Соседние файлы в папке 6