The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"fork, pipe, передача сложных данных между процессами"
Отправлено ACCA, 18-Сен-09 04:18 
#!/usr/bin/perl
use strict;
use warnings;

use Storable qw(store_fd fd_retrieve);
use IO::Pipe;
use IO::Handle;
use Data::Dumper;

# создаем трубу
my $pipe = IO::Pipe->new();

# делаем fork
my $pid = fork();

# дочка
if( $pid == 0 ) {
   # тут мы пишем в трубу
   $pipe->writer();
   $pipe->autoflush( 1 );

   foreach( 1..10 ) {
      # создаем ссылку на хэш
      my $data = { pid => $$, data => $_ };

      # пересылаем в трубу закодированный в строку хэш
      store_fd $data, $pipe;

      # sleep на 0.3 секунды
      select undef, undef, undef, 0.3;
   }
}

# родитель
else {
   unless( defined $pid ) {
      die 'Cannot fork';
   }

   # тут мы читаем из трубы
   $pipe->reader();

   until ( eof $pipe ) {
      my $data = fd_retrieve($pipe);

      # выводим то, что пришло от дочки
      print Dumper $data;
   }
}

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру