2011-02-02 5 views
1

Мне нужно обменивать переменные между различными дочерними процессами и моим родительским процессом в Perl без использования IPC::Shareable.Поделиться переменными между дочерними процессами в perl без IPC :: Shareable

Мне просто нужна глобальная переменная, которую все процессы могли бы читать/писать. Кроме того, переменной требуется только доступ на запись от родителя, если это упростит мой ответ. Детям нужно только читать.

Edit: Моя проблема также может быть решена, если есть способ для меня, чтобы передать сообщение от одного процесса к другому ребенку

ответ

1

Из информации, предоставленной вами, трудно сказать, что является лучшим решением, но есть несколько вариантов, доступных для Вас:

  • передают сообщение между вашими процессами с помощью сокетов, или трубы
  • используйте базу данных, в которой оба процесса считывают и записывают в
  • используйте файл (ы), в котором оба процесса обрабатывают чтение и запись (вы можете использовать сигналы, чтобы сообщить процесс, когда пришло время для чтения из файла)
  • настроен сервер memcache для обмена информацией

... Тем не менее, так как ваша реальная проблема может быть на самом деле «, как я могу сделать что-то в Perl, который требует модуль, который не установлен на моей системе, и у меня нет корневой контроль над этим ящиком и системные администраторы не могут или не будут сотрудничать? ». лучшим ответом является «использование local::lib», но вы можете прочитать больше вариантов в блоге Matt Trout в блоге "But I can't use CPAN!". (Клянусь, я публикую эту ссылку каждую неделю.)

+0

Я действительно получил его, открыв Socket. Спасибо! – Matt

+0

Вероятно, лучше в долгосрочной перспективе ссылаться на http://stackoverflow.com/questions/251705/how-can-i-use-a-new-perl-module-without-install-permissions вместо этого, потому что это может быть проще улучшенный сообществом, чем статья mst. – daxim

0

Вы пробовали threads::shared?

+0

Я видел какое-то странное поведение с потоками Perl, поэтому вместо этого я переключился на использование вилок. Мне интересно, есть ли способ, которым я могу выполнить это без потоков, и у меня, к сожалению, нет доступа к IPC :: Shareable =/ – Matt

+0

Почему у вас нет доступа к IPC :: Shareable? Все в порядке [здесь] (http://cpansearch.perl.org/src/BSUGARS/IPC-Shareable-0.60/lib/IPC/Shareable.pm) и [здесь] (http://cpansearch.perl.org/ SRC/BSUGARS/IPC-Разделяется-0,60/Библиотека/IPC/Разделяемые/SharedMem.pm). – mob

+0

Компьютеры, с которыми я работаю, находятся в закрытой сети и не поставляются с этим пакетом по умолчанию. Вероятно, я мог бы установить его на всех моих машинах, если бы я сильно нажал, но я надеялся, что я смогу сделать это другим способом. – Matt

Смежные вопросы