Chs, как я понял, ты предлагаешь создать именной канал?
И писать в него ссылки для проверки другими процессами?
while (1) {
unless (-p $FIFO) {
unlink $FIFO;
system(\'mknod\', $FIFO, \'p\')
&& die "can\'t mknod $FIFO: $!";
}
# next line blocks until there\'s a reader
open (FIFO, "> $FIFO") || die "can\'t write $FIFO: $!";
print FIFO "John Smith (smith\\@host.org)\\n", `fortune -s`;
close FIFO;
sleep 2; # to avoid dup signals
}
Пример в перлдоке вроде ясен. Не ясно другое.
Запустить 10 копий скрипта-обработчика вызвать, я думаю самое простое, через system.
Которые будут делать одно и тоже, читать информацию из именновонного канала, и обрабатывать её.
Не понятно,
1) как основной программе определить, прочитана ли данные из канала, и следует ли туда записывать новые данные, или ждать пока прочитают.
2) как из основной программы определить, что все скрипты отработали, и можно сообщить об этом в лог файл и/или юзеру на экран.
3) Правильно ли я понял, что при чтении именного канала прочитанная информация из него удаляется?
А зачем мне использовать fork. Мне же не надо запускать копию текущей программы? Или надо?