PERL. Распределение ресурсов между процессов.

Все о программировании под *nix
Anonymous

PERL. Распределение ресурсов между процессов.

Сообщение Anonymous »

К примеру есть массив состоящий из 100 эл-в.
В цикле пораждается 4 процесса, мне нужна распределить между 4мя процессами эл-ты массива, каждому процессу по 25 и вывести их на STDOUT.
Думаю можна это зделать через файл, пайпы и разделяемую память ( без модуля IPC::Shareable ) но не знаю как, эксперементировал по разному, впринцыпе сама работа мне понятно но а вот реализовать perl-языком не могу, помогите пожалуйсто.

ps: использую fork()

вот скрипт на базе которога я думал делать:

Код: Выделить всё

#!/usr/bin/perl
use strict;
use warnings;

my $num = 4;
my @child;

for(1..$num) {
    my $pid = fork();
    if($pid) { push @child,$pid; }
    elsif($pid == 0) { print "$$\n"; exit(0); }
    else{ print "fork() failed : $!\n"; }
}

for(@child) { waitpid($_,0); }

Lioxa
Неотъемлемая часть форума
Сообщения: 732
Зарегистрирован: 18 янв 2004, 22:29
Откуда: Минск
Контактная информация:

Сообщение Lioxa »

Элементы масива передавать уже существующим процессам? т.е. масив будет меняться по ходу работы процессов-потомков?

Аватара пользователя
grub
Неотъемлемая часть форума
Сообщения: 849
Зарегистрирован: 13 сен 2006, 10:29
Откуда: Минск
Контактная информация:

Сообщение grub »

Отсутствует открытие пайпа на каждом из форков... Ну и обслуживание пайпа на каждом из его концов :)
Дети выходят как только напечатают свой pid

Короче, скелет на беглый взгляд правильный.

man perlipc на предмет правильного открытия каналов между предком и потомком и вперед.
Убедись, что в конце не повиснет зомбяков и все каналы будут закрыты.


Лаба?
Змагайся і адпачывай!

Аватара пользователя
grub
Неотъемлемая часть форума
Сообщения: 849
Зарегистрирован: 13 сен 2006, 10:29
Откуда: Минск
Контактная информация:

Сообщение grub »

А вообще не проще ли так (условно):

Код: Выделить всё

@array=(1,2,3...100);
for ($i=1..4)
{
$pid=fork();
(unless $pid)
     {
      $index_start=25*($i-1);
      $index_end=25*$i-1;
        do_what_you_want_with_array_part_between_indexstart_and_indexend
     }
}
Змагайся і адпачывай!

Аватара пользователя
myst
Маньяк
Сообщения: 190
Зарегистрирован: 04 окт 2005, 15:46
Откуда: не возвращаются

Сообщение myst »

Ему так и ответили уже на nixp.ru и послали читать man perlfork... :D
Иными вечерами я пью, чтобы кого-нибудь не пристрелить. Это акт благотворительности. Не за что.

Ответить