информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





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