[bcn-pm] Enviar un objeto a un proceso hijo

Alex Muntada alexmaalexm.org
Dil Abr 3 15:43:04 PDT 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

* Gabriel Perez S. <gperezarunsolutions.com>:
  [2006-03-31 13:54:44 +0200]

> el problema que tengo es que yo quiero enviar a los hijos
> algunos de los eventos que recibo del demonio pero la variable
> donde "meto" el socket que se conecta con el demonio de los
> eventos no la pueden ve los hijos

El problema del que parles s'anomema Inter-Process Communication
(IPC) en sistemes basats en Unix. Hi ha moltes formes per a
comunicar o compartir informació entre processos: des de les
zones de memòria compartida, passant per les pipes, fitxers,
sockets, pas de missatges, etc.

Cada solució té els seus avantatges i els seus inconvenients.
Fes un cop d'ull al manual de «perlipc» i busca IPC al CPAN.

> Para -solucionar- esto cree otro objeto "pakage" que se llama
> GLOBAL (esta en el script central) y este deberia ser el sitio
> donde se guarden los eventos enviados por el demonio y los hijos
> deberían verlo. La idea, es que lo vean todos, el script central
> y el demonio de los eventos para enviarle lo que le toca a cada
> hijo.

Busca «Bidirectional Communication with Yourself» al perldoc
perlipc i veuràs maneres més senzilles d'aconseguir comunicar
pares i fills via pipes o sockets.

> tiene que existir alguna manera de mantener comunicados a hijos
> y padres sin hacer que se conecten entre sí por unix socket o
> tcp/udp. ¿No?

La manera clàssica d'IPC entre pares i fills es basa en pipes:

  1) el procés pare crea una pipe;
  2) el pare fa el fork;
  3) el pare tanca un dels canals de la pipe;
  4) el fill (que hereda la pipe), tanca l'altre canal;
  5) tot el que el pare escriu pel canal obert de la pipe,
     ho rep el fill pel seu.
 
Si vols comunicació bidireccional, només et cal utilitzar 2
pipes (com en el primer exemple que trobaràs a la secció que
comentava del perlipc).

- --
Alex Muntada <alexmaalexm.org>
http://alexm.org/

-----BEGIN PGP SIGNATURE-----

iD8DBQFEMaTyLdxCGS3zaBERAlZrAKCDCg6er+II86n7pWjKUHg5sTun6gCfQufA
yBonLj5EcfJP0lIQcIcT31g=
=L03J
-----END PGP SIGNATURE-----


Més informació de la llista de correu Barcelona-pm