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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Andrey Brindeew                      2:5020/400     04 Dec 2000  00:14:24
 To : All
 Subject : Re: fork
 -------------------------------------------------------------------------------- 
 
 "Edward Muhutdinov" <Edward.Muhutdinov@p13.f89.n5049.z2.fidonet.org> wrote:
 
 >  Возникла проблема с fork. Ситуация такая - в перловом скрипте в середине
 > процесса форкается несколько процедур.
 
 Встречный вопрос - зачем форкаемся? Если затем, чтобы после отдачи клиенту
 сообщения "Работа запущена, ждем-с результаты..." продолжить что-то делать
 (например, рассылку или еще чего критичное ко времени), то тебе нужно
 отделиться нафик от родителя, которому скоро суждено сдохнуть.
 
 Вот кусок из моего тестового скрипта на эту тему:
 
 use strict;
 use POSIX 'setsid';
 use CGI;
 
 my $q = CGI->new();
 
        if (my $pid = fork) {
        print $q->header(), $q->start_html('We are forked!'),
                'Successfully forked!', $q->end_html();
                sleep 5;
        }
        else {
                die "Can't fork: $!" unless defined $pid;
                open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
                open STDOUT, '>/dev/null' or die "Can't write to /dev/null:
 $!";
                setsid                  or die "Can't start a new session:
 $!";
                open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
                sleep 10;
                my $a = `touch /tmp/tst/a`;
                exit 0;
        }
 
 Ключевым здесь является закрытие STDIN, STDOUT & STDERR, наследуемых от
 родителя и использование POSIX-функции setsid. Про setsid расскажут в
 документе 'man 2 setsid'. По крайней мере на Linux. :)
 
 --
 WBR, Andrey Brindeew
 "No one person can understand Perl culture completely" (C) Larry Wall.
 
 --- ifmail v.2.15dev5
  * Origin: Dportal.Ru (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 fork   Edward Muhutdinov   29 Nov 2000 22:44:13 
 Re: fork   Andrey Brindeew   04 Dec 2000 00:14:24 
 fork   Edward Muhutdinov   07 Dec 2000 18:39:38 
 fork   Edward Muhutdinov   07 Jan 2001 01:03:39 
Архивное /ru.perl/7502770da57a.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional