elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con procesos en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con procesos en C  (Leído 2,216 veces)
ZedGe

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Ayuda con procesos en C
« 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


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Ayuda con procesos en C
« Respuesta #1 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.


En línea

ZedGe

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Ayuda con procesos en C
« Respuesta #2 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.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda con procesos en C
« Respuesta #3 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
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con los procesos
Programación Visual Basic
br1 4 2,167 Último mensaje 21 Junio 2005, 11:35 am
por br1
Listar procesos y realizar cosas con los procesos
Programación Visual Basic
sebas369 2 3,415 Último mensaje 14 Julio 2006, 16:08 pm
por sebas369
Ayuda con Matar Procesos desde VB
Programación Visual Basic
songecko 0 1,057 Último mensaje 30 Agosto 2006, 16:38 pm
por songecko
Ayuda con procesos de windows « 1 2 »
Windows
H1tchclock 16 13,402 Último mensaje 15 Enero 2012, 22:59 pm
por H1tchclock
Ayuda con programación de procesos
Programación C/C++
ezkar 9 3,988 Último mensaje 3 Abril 2014, 16:45 pm
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines