Главная страница


ru.cgi.perl

 
 - RU.CGI.PERL ------------------------------------------------------------------
 From : Artem Chuprina                       2:5020/371.32  27 Oct 2000  14:23:31
 To : abr@mccinet.ru
 Subject : Re: Сомнения...
 -------------------------------------------------------------------------------- 
 
 amr> Стандартная ситуация: CGI-скрипт форкается, родитель говорит броузеру
 amr> "Bye-bye!", а предварительно отсоединившийся дитенок продолжает работу,
 amr> потом дохнет. Hо на днях меня админ разочаровал: по его словам в результате
 amr> некоторых ошибок ядро может выбросить дитенка в зомби, а т.к. за ним никто
 amr> не следит, то данный PID так и будет висеть в таблице процессов. Проясните
 amr> пожалуйста ситуацию!
 
 amr> Вот используемый мной код:
 
 amr>     if (my $pid = fork) {
 amr>         print "Content-Type: text/plain\n\nProcessing...";
 amr>     }
 amr>     else {
 amr>         die "Can't fork: $!" unless defined $pid;
 
 amr>         # Detaching child from parent process
 amr>         open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
 amr>         open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";
 amr>         setsid                  or die "Can't start a new session: $!";
 amr>         open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
 
 amr>         # Some stuff
 amr>         exit 0;
 amr>     }
 
 Вообще, если я правильно ошибаюсь, помогает double fork - ты форкаешь ребенка
 и wait его. Он форкает ребенка и exit(0). Внук попадает в дети к init'у. А
 тот обязан чистить зомбей.
 
 -- 
 Счастливо!
   Ран.
 --- ifmail v.2.14.os-p7-tma3
  * Origin: MemoNet (2:5020/371.32@fidonet)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Сомнения...   Artem Chuprina   27 Oct 2000 14:23:31 
Архивное /ru.cgi.perl/171216b5079be.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional