Comunicación IPC

A

Hola, estoy intentando hacer una cosa pero no entiendo muy bien el planteamiento.
Lo voy a intentar exponer brevemente, y agradecería si alguien me puede iluminar el princípio del camino

Tengo que hacer en Linux y en código C, una aplicación multi-proceso.
A partir de un proceso principal al cual se le pasa un entero, debe crear un número de procesos correspondiente a este valor.
Y no veo como debería plantearlo..

Digamos que yo tengo dos procesos previamente ( proc1.c y proc2.c ), con su codigo correspondiente. Y los ejecuto en 2 terminales distintas, y efectivamente, al estar implementados en memória compartida trabajan juntos.

Pero no me imagino como a partir de un programa principal, creas N procesos, y estos con un código concreto..

Saludos.

B

Pues con la libreria IPC.h se crea un area de memoria compartida para ambos programas... digamos que se reserva un espacio para que ambos programas puedan tener un espacio comun donde escribir, luego mapeas el area de memoria reservada en el otro programa y fuego...

A

Si, lo de memória compartida y tal bien, pero lo que no me queda claro es lo de crear N procesos..
Porque si por proceso entendemos un archivo.c que se ejecuta en una terminal, como creo N de estos procesos desde un programa principal?

Aún que dandole vueltas, puede que con proceso se refiera a hacer un "fork()", aún que yo esto no lo veo un proceso como tal..

Pero claro, la primera opción que planteo no se si tiene mucho sentido y es factible realmente xD

#4 creo que si, es que me comido la cabeza pensando que al crear hijos crearía hilos finos por llamarlo de alguna manera.
Pero claro, un fork() es crear un proceso por propia definición. Luego llamale hijo o nieto :palm: gracias!

B

No se exactamente lo que te estan pidiendo, pero si, crear procesos se hace a partir de fork... creo que deberias de hacer un main que en funcion de la id del proceso (si es proceso padre o proceso hijo) ejecute codigo1.c o codigo2.c... pero vamos que tienes que meter los 2 codigos en un solo archivo para hacerlo.

dagavi

#3 ¿No ves fork() como creación de un proceso cuando es exactamente eso lo que hace? xDD

JuAn4k4

Con fork() creas procesos, y con threads creas hilos.

Archivo *.c != proceso,

Un archivo .c es codigo fuente, de alguna aplicación que luego ejecutas como un proceso ( tras compilarlo ), en 1 proceso, o en varios procesos ( si en la aplicación se crean procesos ), ya sean en la misma maquina o en distintas maquinas. Puedes lanzar varias veces el mismo programa, teniendo asi más de un proceso ( no muy usual pero a veces... )

Usuarios habituales