(PERL) Как отделить запускаемый скрипт от родителя

bdfy1
Дата: 17.07.2006 17:12:41
Нужно запустить "внешний" скрипт во время запуска CGI скрипта ( чтобы он "отделился" от родителя ) ... Как это сделать ? При запуске через ` script &` скрипт запускается, работает но до тех пор пока apache не остановить ...
Anjey aka PM
Дата: 17.07.2006 17:18:55
RTFM fork

язык какой?
bdfy1
Дата: 17.07.2006 17:51:16
Perl простейший CGI скрипт

Насчет fork - как я понимаю он просто клонирует в отдельный процесс то что находится после запуска но этот отдельный процесс тоже прибивается если родитель прибит ?
Anjey aka PM
Дата: 17.07.2006 18:33:31
мануал почитайте, форком можна добиться отделения процесса, я сейчас точно не скажу как это делается, т.к. делал это давно
Black
Дата: 18.07.2006 10:31:33
# Как сделать так, чтобы скрипт работал в фоновом режиме, как демон?
# Варианта два. Первый - воспользоваться модулем Proc::Daemon, второй - 
# сделать все самому, примерно так: 
use strict;
require 'sys/syscall.ph';

# Устанавливаем путь по умолчанию
$ENV{PATH} = '/bin:/usr/bin';

# Чисто для прикола
$0='mydaemon';

# Отделяемся от родителя
fork() && exit;

# Отключаемся от терминала
close STDOUT; close STDERR; close STDIN;

# Делаем корень текужим каталогом
chdir '/';

# Создаем новую сессию и становимся лидером
# группы процессов, чтоб нас случайно не прибили
syscall(&SYS_setsid);

# Перехватываем сигналы, для корректного выхода
$SIG{'INT'} = $SIG{'QUIT'} = $SIG{'TERM'} = 'quit';
$SIG{'HUP'} = 'ignore';

# Делаем наши темные дела
...

# Выходим
quit();

sub quit {
  # Помещаем сюда код для корректного
  # прекращения работы
  ...
  exit(0);
}
# Если Вы хотите написать демона, реализующего работу через сеть, 
# рекомендуем ознакомиться с модулем Net::Daemon.
Xpoint.ru - Программирование::Perl::Разное - F.A.Q.
LeXa NalBat
Дата: 19.07.2006 09:23:35
использовать модули со CPAN-а: search: daemonize