URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7684
[ Назад ]

Исходное сообщение
"Запись в хеш в дочерних процессах(fork)"

Отправлено duts , 03-Ноя-08 14:42 
собсно код:
use POSIX ":sys_wait_h";
$SIG{CHLD}='IGNORE';
for (1..3) {    
    my $pid = fork();
    unless ($pid) {
        dbmopen(%changes, "/", 0644);
        for ($i=1; $i<4; $i++) {
            $changes{$$}{$i} = "thing $$ $i";
        }
        dbmclose(%changes);
        exit;
    }
}

Здесь запускается три процесса, но записи в %changes происходят только для $i=2 и $i=3. Для $i=1 значения в итоге неопределены... Почему в срезе $i=1 пусто? В перле не силен, так что если глупость какую написал не серчайте) Заранее спасибо!


Содержание

Сообщения в этом обсуждении
"Запись в хеш в дочерних процессах(fork)"
Отправлено duts , 04-Ноя-08 15:25 
>[оверквотинг удален]
>  }
>  dbmclose(%changes);
>  exit;
> }
>}
>
>Здесь запускается три процесса, но записи в %changes происходят только для $i=2
>и $i=3. Для $i=1 значения в итоге неопределены... Почему в срезе
>$i=1 пусто? В перле не силен, так что если глупость какую
>написал не серчайте) Заранее спасибо!

методом "Тыка" было установлено что корректно работает для одномерного массива, для хеша хешей - имеем, то что имеем)



"Запись в хеш в дочерних процессах(fork)"
Отправлено NuINu , 04-Ноя-08 19:11 
>[оверквотинг удален]
>> }
>>}
>>
>>Здесь запускается три процесса, но записи в %changes происходят только для $i=2
>>и $i=3. Для $i=1 значения в итоге неопределены... Почему в срезе
>>$i=1 пусто? В перле не силен, так что если глупость какую
>>написал не серчайте) Заранее спасибо!
>
>методом "Тыка" было установлено что корректно работает для одномерного массива, для хеша
>хешей - имеем, то что имеем)

хочешь сохранить более сложную структуру, сериализуй ее, способов много
Storable и Data::Dumper