C/Visual C - comunicacion entre procesos

 
Vista:

comunicacion entre procesos

Publicado por NelaX (1 intervención) el 10/07/2003 11:38:03
Tengo un problema que es el siguiente.........
Tengo que construir un programa en Unix (Linux Solaris o De.) que acepte como parámetro un entero N. Dicho número representa la cantidad total de procesos que se van a crear. Cada proceso queda conectado con su sucesor a través de un pipe. Tomando como ejemplo N=5. El proceso original, a través del pipe creado, comenzará a traspasar una variable al siguiente proceso. Esta variable tendrá un valor inicial de uno. El proceso que reciba la variable debe verificar si es un numero primo, si este fuera el caso debe guardar la hora y el valor de la variable en un archivo llamado primos.txt. Luego, la variable debe ser incrementada y pasada al proceso siguiente y asi sucesivamente.
Cada proceso debe abrir y cerrar el archivo. Pucha ojala ojala calcular un numero muy grande primo.
soy novata en esto de procesos, pero la base de C la tengo, en el programa estoy bien con la parte de los argumentos como parametros en el main y con el calculo de los numeros primos, pero la conexion entre tantos procesos con pipes no se, se agradece a toda persona que me ayudara a solucionar mi problema.

Atte. NelaX
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:comunicacion entre procesos

Publicado por chuidiang (677 intervenciones) el 10/07/2003 16:29:28
Una forma "sencilla" de hacerlo, aunque no sé si te vale.

Haces un programa con main que reciba como argumento el numero de procesos. Supongamos que el ejecutabla se llama "MiPrograma".
Este programa lee de la stdin (con scanf o lo que quieras) el numero que debe verificar si es primo y luego incremenar y pasar a los otros.

Una vez leido, hace sus comprobaciones para ver si es primo, etc, etc. Luego, con el numero recibido como argumento en el main, haces algo como esto

char comando [100]; /* un numero suficiente de caracteres */
FILE *otroProceso;
if (argumentoMain > 0)
{
sprintf (comando, "MiPrograma %d", argumentoMain-1)
otroProceso = popen (comando, "w");
fprintf (otroProceso, "%d", numero + 1); /* numero es el que se debe incrementar y pasar al siguiente */
}

La funcion popen() se encarga de lanzar otro MiPrograma en un proceso aparte. El descriptor otroProceso queda enganchado a la stdin del nuevo proceso, de forma que lo escribas a traves de otroProceso con fprintf(), el otro proceso podra leerlo con scanf().

No se si me he explicado bien, pero consulta lo que necesites

Digo que no se si te vale, porque popen() realmente lanza otro proceso, pero si esto es para clase, quizas quieran que uses fork()

En mi pagina tienes algun ejemplo de popen() (en funciones utiles) y algo sobre procesos con fork().

Se buena.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar