Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: ZedGe en 12 Abril 2013, 21:21 pm



Título: Ayuda con procesos en C
Publicado por: ZedGe en 12 Abril 2013, 21:21 pm
Tengo el siguiente código hecho en linux:

Código:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
 
int main(int argc, char *argv[]) {
  int i,n;
  pid_t pid;
  int status;
 
  if (argc < 2) {
    fprintf(stderr,"fork1 <valor entero>\n");
    return -1;
  }
  n = atoi(argv[1]);

  for(i=0;i<n-1;i++) {
 
    pid = fork();
    if (pid == 0) {
      printf("Hijo con PID:%i y papa:%i ID HIJO: %i\n",getpid(),getppid());

 
    }
    else {
      printf("Papa con PID:%i con hijo %i\n",getpid(),pid);
      wait(&status);
      exit(0);
    }
  }
}


Este código me crea N procesos, es decir si ingreco ./main.out 3 me creará 3 procesos.
mi problema, es que necesito que cada proceso tenga una ID dada por mi, aparte de la propia que se crea, es decir que de los 3 procesos, cada uno tenga una id del 0 al 2, y que imprima esa ID al pasar por el proceso.

Espero puedan ayudarme, gracias


Título: Re: Ayuda con procesos en C
Publicado por: naderST en 13 Abril 2013, 00:53 am
La idea es que un proceso cree N procesos correcto? Recuerda que fork() duplica el código del proceso padre y en el proceso hijo continúa la ejecución donde quedó el proceso padre. En tu caso tus procesos hijos también van a crear procesos hijos porque no llamas a exit inmediatamente al hacer el printf. Corre tu código con N = 2 y te creará tres procesos.

Otra cosa, una vez corregido lo que te mencioné anteriormente, dejando el else dentro del for, es decir, el segmento de código que ejecutará el padre los procesos se crearan secuencialmente, ejemplo: El padre crea 1 proceso y espera a que este terminé para crear el siguiente.


Título: Re: Ayuda con procesos en C
Publicado por: ZedGe en 13 Abril 2013, 01:24 am
Perdón si me explique mal, la idea es que funcione como una cola, es decir el proceso padre crea un hijo, luego ese hijo crea otro hijo. Quedando una especie de fila de procesos.

Necesito ponerles un ID para luego crear un buscador y que un pipe me diga en que posición esta.


Título: Re: Ayuda con procesos en C
Publicado por: rir3760 en 13 Abril 2013, 03:10 am
Tengo el siguiente código hecho en linux [...]
Lo primero que debes hacer es seguir todas las indicaciones de naderST .

mi problema, es que necesito que cada proceso tenga una ID dada por mi, aparte de la propia que se crea, es decir que de los 3 procesos, cada uno tenga una id del 0 al 2, y que imprima esa ID al pasar por el proceso.
Utiliza el valor del contador "i". En el caso de los hijos estará en el rango 0 a N-2 y en el caso del padre sera igual a N-1.

Un saludo