Tu programa controlador sería algo así (ojo que no lo he probado):
Código:
#define NUM_PROCESS 5
int main(){
int* pids=int[NUM_PROCESS]; // aquí guardaremos los PIDs
for(int i=0; i<NUM_PROCESS; i++){
pids[i]=fork(); // Llamada a fork! Ahora tenemos dos programas ejecutándose a la vez, padre e hijo
if(pids[i]==0){
// somos el hijo: nos cambiamos por el nuevo programa
execl("./programa", "./programa","argumento1","argumento2",(char *)0);
// ya deberíamos ser el nuevo programa, así que si seguimos aquí es por un error
printf("Error al ejecutar el programa\n");
// Los hijos nunca deberían salir de este if, así que por si alguno se escapa lo terminamos
exit(1);
}else if(pids[i]<0){
// somos el padre y hemos fallado al crear el hijo.
printf("Error en el fork()");
}else{
// Somos el padre y todo fue bien:
printf("He parido un nuevo retoño con PID=%d\n", pids[i]);
}
}
// Resto de código del controlador una vez que haya creado a sus hijos.
// Recuerda que hemos tenido cuidado para que los hijos nunca lleguen aquí
// Recuerda que los PIDs están en el array pids[]
// Y finalmente, recuerda que puedes esperar a que los hijos acaben con wait() y waitpid()
patata();
}
Marcadores