информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Атака на InternetВсе любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 На GitHub пугают ложными предупреждениями... 
 Атака на пользователей больших... 
 Notepad++ полгода раздавал зараженные... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
На fork() основана вся многозадачность UNIX. Или тебя интересует именно приложение к Перлу? 16.04.03 16:05  Число просмотров: 1697
Автор: 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-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach