<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: fork, отправка сообщений всем потомкам.</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html</link>
    <description>родитель порождает несколько потомков, нужно организовать между ними обмен данными такого типа: каждый потомок отправляет родителю сообщение, а родитель это сообщение пересылает всем остальным (или вообще всем) потомкам.&lt;br&gt;Второй вариант: любой потомок отправляет сообщене всем своим собратьям минуя родителя.&lt;br&gt;&lt;br&gt;Пробовал делать через сокет, тогда получается что потомки могут отправить родителю данные через сокет, а родитель используя этот сокет отправляет только одному из потомков, последнему который с ним связался, а все остальные ничего не получают.&lt;br&gt;Через пайпы то же самое.&lt;br&gt;Через именованный канал тоже только один но случайный потомок получает сообщение.&lt;br&gt;Через файл что-то получилось, но есть пара минусов: обмен происходит через хранящийся на диске файл, а не через память, и второе: потомки при считывании конца файла не ждут записи в него как если использовать пайп, приходится в цикле многократно считывать из файла пока в него не будет записано, а как сделать ожидание я не знаю.&lt;br&gt;Подскажите может есть други</description>

<item>
    <title>fork, отправка сообщений всем потомкам. (D_Pavel)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html#7</link>
    <pubDate>Wed, 27 Jan 2010 04:27:01 GMT</pubDate>
    <description>&amp;gt;Установить обработчик прерывания ДО форка.. &lt;br&gt;&amp;gt;Тогда его получат все потомки :) &lt;br&gt;&lt;br&gt;Разобрался. Не важно где стоит обработчик, до или после форка. Сигнал нужно было посылать группе процессов, и включить эти процессы в группу. Вот так работают сигналы:&lt;br&gt;&lt;br&gt;#!/usr/bin/perl -w&lt;br&gt;use CGI::Carp qw(fatalsToBrowser);&lt;br&gt;use strict;&lt;br&gt;$&amp;#124;=1;&lt;br&gt;print &quot;Content-type: text/html&#092;n&#092;n&quot;;&lt;br&gt;&lt;br&gt;$SIG&#123;USR1&#125; = sub &#123; print &quot;$$: Сигнал получен&lt;br&gt;&quot;;&#125;;&lt;br&gt;&lt;br&gt;setpgrp;&lt;br&gt;my $pppp=$$;&lt;br&gt;&lt;br&gt;defined (my $pid = fork()) or die &quot;$$: Кончились форки. $!&lt;br&gt;&quot;;&lt;br&gt;if ($pid == 0) &#123;&lt;br&gt;#Дочь&lt;br&gt;print &quot;$$ New, СИГНАЛ ! ! ! !  &lt;br&gt;&quot;;&lt;br&gt;kill -30, $pppp;&lt;br&gt;sleep 2;&lt;br&gt;print &quot;$$ exit&lt;br&gt;&quot;;&lt;br&gt;exit;&lt;br&gt;&#125;&lt;br&gt;#Мать&lt;br&gt;sleep 3;&lt;br&gt;print &quot;$$ exit&lt;br&gt;&quot;;&lt;br&gt;exit;&lt;br&gt;&lt;br&gt;В результате программа печатает такое: &lt;br&gt;99829 New, СИГНАЛ ! ! ! ! &lt;br&gt;99829: Сигнал получен&lt;br&gt;99827: Сигнал получен&lt;br&gt;99827 exit&lt;br&gt;99829 exit&lt;br&gt;</description>
</item>

<item>
    <title>fork, отправка сообщений всем потомкам. (D_Pavel)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html#6</link>
    <pubDate>Tue, 26 Jan 2010 11:00:41 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;&amp;gt;http://perl.find-info.ru/perl/015/process/3.htm &lt;br&gt;&amp;gt;&amp;gt;&amp;gt;http://www.gelin.ru/text/trans/perl-ipc/ &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Эти статиьи я уже читал, идея подходящая, но до конца не разобрался. &lt;br&gt;&amp;gt;&amp;gt;Облегчите мне жизнь, скажите прямо, как послать сигнал всем потомкам? Уже &lt;br&gt;&amp;gt;&amp;gt;глаза болят читать, честное слово! &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Установить обработчик прерывания ДО форка.. &lt;br&gt;&amp;gt;Тогда его получат все потомки :) &lt;br&gt;&lt;br&gt;Странно! У меня обработчик стоит в самом начале программы, он срабатывает только один раз с PID родителя, хотя есть потомки...&lt;br&gt;</description>
</item>

<item>
    <title>fork, отправка сообщений всем потомкам. (Square)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html#5</link>
    <pubDate>Tue, 26 Jan 2010 10:19:12 GMT</pubDate>
    <description>&amp;gt;&amp;gt;не нужно ничего ожидать. потомок запишет что-то в файл, и пошлет родителю &lt;br&gt;&amp;gt;&amp;gt;(или сразу всем соседним потомкам) сигнал. по приходу сигнала они считают &lt;br&gt;&amp;gt;&amp;gt;содержимое файла. &lt;br&gt;&amp;gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;http://perl.find-info.ru/perl/015/process/3.htm &lt;br&gt;&amp;gt;&amp;gt;http://www.gelin.ru/text/trans/perl-ipc/ &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Эти статиьи я уже читал, идея подходящая, но до конца не разобрался. &lt;br&gt;&amp;gt;Облегчите мне жизнь, скажите прямо, как послать сигнал всем потомкам? Уже &lt;br&gt;&amp;gt;глаза болят читать, честное слово! &lt;br&gt;&lt;br&gt;Установить обработчик прерывания ДО форка..&lt;br&gt;Тогда его получат все потомки :)&lt;br&gt;</description>
</item>

<item>
    <title>fork, отправка сообщений всем потомкам. (D_Pavel)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html#4</link>
    <pubDate>Tue, 26 Jan 2010 08:35:21 GMT</pubDate>
    <description>&amp;gt;не нужно ничего ожидать. потомок запишет что-то в файл, и пошлет родителю &lt;br&gt;&amp;gt;(или сразу всем соседним потомкам) сигнал. по приходу сигнала они считают &lt;br&gt;&amp;gt;содержимое файла. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;http://perl.find-info.ru/perl/015/process/3.htm &lt;br&gt;&amp;gt;http://www.gelin.ru/text/trans/perl-ipc/ &lt;br&gt;&lt;br&gt;Эти статиьи я уже читал, идея подходящая, но до конца не разобрался. Облегчите мне жизнь, скажите прямо, как послать сигнал всем потомкам? Уже глаза болят читать, честное слово!&lt;br&gt;</description>
</item>

<item>
    <title>fork, отправка сообщений всем потомкам. (Square)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html#3</link>
    <pubDate>Tue, 26 Jan 2010 06:52:00 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Не знаю как отправить сообщение сразу всем потокам, подскажите? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;   канал&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;То же самое &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;   файл&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Не знаю как сделать ожидание записи в файл, подскажите? &lt;br&gt;&lt;br&gt;не нужно ничего ожидать. потомок запишет что-то в файл, и пошлет родителю (или сразу всем соседним потомкам) сигнал. по приходу сигнала они считают содержимое файла.&lt;br&gt;&lt;br&gt;http://perl.find-info.ru/perl/015/process/3.htm&lt;br&gt;http://www.gelin.ru/text/trans/perl-ipc/&lt;br&gt;</description>
</item>

<item>
    <title>fork, отправка сообщений всем потомкам. (D_Pavel)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html#2</link>
    <pubDate>Tue, 26 Jan 2010 04:42:00 GMT</pubDate>
    <description>&amp;gt;всего 4 типа взаимодействия между &lt;br&gt;&amp;gt;потоками: &lt;br&gt;&amp;gt;   сокет&lt;br&gt;&lt;br&gt;Не знаю как отправить сообщение сразу всем потокам, подскажите?&lt;br&gt;&lt;br&gt;&amp;gt;   канал&lt;br&gt;&lt;br&gt;То же самое&lt;br&gt;&lt;br&gt;&amp;gt;   файл&lt;br&gt;&lt;br&gt;Не знаю как сделать ожидание записи в файл, подскажите?&lt;br&gt;&lt;br&gt;&amp;gt;   память&lt;br&gt;&lt;br&gt;нет принципа конвейера как в остальных типах, простая программа не получится, мудрить сложное не хочу. Или есть простые варианты для моего случая?&lt;br&gt;</description>
</item>

<item>
    <title>fork, отправка сообщений всем потомкам. (f00l)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8599.html#1</link>
    <pubDate>Tue, 26 Jan 2010 04:32:54 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;потомков, последнему который с ним связался, а все остальные ничего не &lt;br&gt;&amp;gt;получают. &lt;br&gt;&amp;gt;Через пайпы то же самое. &lt;br&gt;&amp;gt;Через именованный канал тоже только один но случайный потомок получает сообщение. &lt;br&gt;&amp;gt;Через файл что-то получилось, но есть пара минусов: обмен происходит через хранящийся &lt;br&gt;&amp;gt;на диске файл, а не через память, и второе: потомки при &lt;br&gt;&amp;gt;считывании конца файла не ждут записи в него как если использовать &lt;br&gt;&amp;gt;пайп, приходится в цикле многократно считывать из файла пока в него &lt;br&gt;&amp;gt;не будет записано, а как сделать ожидание я не знаю. &lt;br&gt;&amp;gt;Подскажите может есть другие идеи как организовать обмен? &lt;br&gt;&lt;br&gt;Так как ты создаешь потоки, то есть всего 4 типа взаимодействия между потоками:&lt;br&gt;   сокет&lt;br&gt;   канал&lt;br&gt;   файл&lt;br&gt;   память&lt;br&gt;  У каждой системы есть свои плюсы и минусы. выбирай и пользуйся. &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
