Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > создание разветвлений через fork в цикле


Автор: kukich 7.2.2011, 13:38
Привет.
Дан список IP адресов.
Нужно чтобы родительский процесс считывал по одному айпишнику из файла и раздавал их дочерним процессам ,которые выполняли бы с ним функцию dig и записывали ответ в файл.
Вот я столкнулся с проблемой : когда нужно разветвлять процесс?до или после цикла?есть ли еще какой нить способ  передавать информацию,кроме как через pipe()?

Автор: shamber 7.2.2011, 14:18
передавать можно и через файл smile через сокет, и еще вариантов придумать можно

Автор: Pfailed 7.2.2011, 16:13
Цитата(kukich @  7.2.2011,  13:38 Найти цитируемый пост)
до или после цикла?

Про какой цикл речь?

Автор: kukich 8.2.2011, 12:22
Цитата(Pfailed @ 7.2.2011,  16:13)
Цитата(kukich @  7.2.2011,  13:38 Найти цитируемый пост)
до или после цикла?

Про какой цикл речь?

ну в цикле родитель должен читать файл, из которого вытягивать IP и отдавать его ребенку,который в свою очередь этот IP обрабатывает.Я,по крайне мере,себе именно так это представляю

Добавлено через 49 секунд
ну я еще неправильно видимо выразился - до начала цикла или во время цикла надо разветвлять процесс?

Автор: Pfailed 8.2.2011, 17:07
Разветвлять нужно в отдельном цикле, который должен находиться до этого вашего цикла.
Примерно так
Код

for my $i (1..$workers) {
    my $child = fork();
    unless(defined($child)) {
        die "fork failed: " . $!;
    }
     elsif($child == 0) {
           # здесь код дочернего процесса
           # и обязательно выйти в конце, дабы не пойти дальше по циклу и после цикла
           exit;
     }
}


Автор: arto 8.2.2011, 17:26
вроде уже есть асинхронные ресолверы?

Автор: NuINu 9.2.2011, 18:04
изучайте

http://forum.vingrad.ru/forum/topic-247455/anchor-entry1786259/0.html

Автор: kukich 10.2.2011, 15:43
Спасибо,понял как следует работать.

Добавлено через 30 секунд
Цитата(NuINu @ 9.2.2011,  18:04)
изучайте

http://forum.vingrad.ru/forum/topic-247455/anchor-entry1786259/0.html

Очень полезная ссылка,спасибо

Автор: kavkaz 14.2.2011, 10:06
А можно поиграться вот так:
(за вас тут пофоркают и наладят связь через сокеты)

http://search.cpan.org/~kni/IPC-MPS-0.09/IPC/MPS.pm


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)