информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Портрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
На fork() основана вся многозадачность UNIX. Или тебя интересует именно приложение к Перлу? 16.04.03 16:05  Число просмотров: 1549
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
<programming>
[Perl] fork() объясните смысл 16.04.03 13:14   [Ktirf, JINN, PS, Sandy]
Автор: choor Статус: Elderman
<"чистая" ссылка>
Зачем создавать копию процесса? НА простом примере.
2mozart Прошу по-хорошему - закрой тему. Кажется, ты уже получил ответ на вопрос. 18.04.03 18:13  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
Отредактировано 18.04.03 20:39  Количество правок: 1
<"чистая" ссылка>
[Perl] fork() объясните смысл 16.04.03 18:01  
Автор: vh <Дмитрий> Статус: Member
<"чистая" ссылка>
это такой суперский метод создания процесса в юниксе.
несколько непривычен и кажется странным для тех кто до это программировал в Windows.
но может быть сведен к ее стандартной CreateProcess

фича в том, что юниксовский метод порождения процесса является более гибким.

ты об этом спрашивал, или я не понял?
[Perl] Демонизация 16.04.03 17:58  
Автор: whiletrue <Роман> Статус: Elderman
Отредактировано 16.04.03 23:00  Количество правок: 5
<"чистая" ссылка>
#!/usr/bin/perl
use strict;
use POSIX ":sys_wait_h";

my $PidFile = "/var/run/<твой пид>.pid";	# PID-файл (идентификатор процесса)
my $RefreshInterval = 10; 

Daemonize();

sub Process {
	#Комманды демонизированного процесса
}

sub Daemonize {
	# При живом демоне не запускаемся
	if (TestMinion()){
		print "xxx is already running\n\n";
		exit(1);
	}
	my $NPId = fork(); # ! ВЕТВИМСЯ !
	if ($NPId){ # Родитель
		print "My pid is: ", $$, "\n";
		print "Daemon pid is: ", $NPId, "\n";
		open(FH, "+>" . $PidFile); # PID процесса - потомка
		print FH $NPId;
		close(FH);
		exit(0); # Выходим
	} else { # Демон
		POSIX::setsid(); # Отваливаем

		# Обработчики сигналов
		$SIG{'INT'} = "IGNORE";
		$SIG{'HUP'} = "IGNORE";
		$SIG{'TERM'} = \&SigTERM;
		$SIG{'CHLD'} = "IGNORE";

		for (;;){
			Process();
			sleep($RefreshInterval); # Спим
		}
	}
}

sub SigTERM {
	unlink($PidFile);
	exit(0);
}

#
# Проверка наличия процесса в памяти
#
sub TestMinion{
	my $NStatus = 0;
	if (-f $PidFile){ # Если есть такой pid файл
		open(FH, "<" . $PidFile); # Читаем pid
		my $NRootPId = <FH>;
		close(FH);
		if ($NRootPId) { # Если есть pid
			if (kill(0, $NRootPId)) { $NStatus = 1;	# Если процесс жив
			} else { unlink($PidFile); }		# иначе - стираем файл
		}
	}
	return $NStatus
}

---
На fork() основана вся многозадачность UNIX. Или тебя интересует именно приложение к Перлу? 16.04.03 16:05  
Автор: Ktirf <Æ Rusakov> Статус: Elderman
<"чистая" ссылка>
Поясняю, в меру своих знаний. 16.04.03 13:29  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 16.04.03 13:33  Количество правок: 3
<"чистая" ссылка>
> Зачем создавать копию процесса? НА простом примере.
1) Что бы запустить другую задачу, не завершая исходную: Сначала делается копия, потом она замещается (spawn) на другую задачу.
2) Если система многопроцессорная и необходимо выполнить несколько задач, которые могут выполняться параллельно, для решения основной задачи, которая может быть разбита на эти параллельные задачи (криптоанализ перебором например).
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach