LINUX.ORG.RU

perl fork()


0

0

драсте всем, вообщем новая проблемма, сначала код:

#!/usr/bin/perl -w

$pid=1;

for($i=0;$i<4&&$pid!=0;$i++){
$pid=fork;
}

if(!$pid){
$warteZeit=10*rand();
print "fork wartet = ".$warteZeit." sekunden\n";
sleep($warteZeit);
print "hehe\n";
exit();
}else{
wait();
print "mutti wartet\n";
}

вопрос вот в чём, почему после запуска данной программы перл выдаёт
"mutti wartet" хотя далеко не все kind-процессы были вылонлены, в
соновном, после 2-ого хехе появляется "мама ждёт" а потом ещё через
пару секунд появляются оставшиеся "хехе" ????

что я сделал не так?

★★

Ответ на: комментарий от zwon

значит как только один из них (из kind процессов) прекращает работу, то программа продолжается?

а как это исправить?

djung ★★
() автор топика
Ответ на: комментарий от zwon

ещё вопрос , а как можно из форка изменять переменную самой программы, короче что нада, это как нить сделать прогресс бар, вот тока у мну ничё на получается =(

нужно чтоб была как бы глобальная переменная, и форк её изменял ($а++)

djung ★★
() автор топика
Ответ на: комментарий от djung

> из форка изменять переменную самой программы

Ты имеешь ввиду из дочернего процесса? Только через IPC

zwon
()
Ответ на: комментарий от zwon

может сделать велосипед? через файл? дочерные процессы в него пишут, а родитель его всё время читает?

погуглил по счёт ИПЦ, что то ничё пока не понял =(

djung ★★
() автор топика
Ответ на: комментарий от djung

можно, конечно, и через файл, но как то это не элегантно. Тогда уж именованный канал или UNIX сокет.

Про IPC в перле: perldoc perlipc

zwon
()
Ответ на: комментарий от zwon

сделал на первое время с темп файлом, как время появится попробую через FIFO || IPC (читал, читал так и не догнал =(, может на сегодня устал?... )

спасибо за помощь.

djung ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.