C/Visual C - procesos

   
Vista:

procesos

Publicado por pablo (1 intervención) el 01/07/2010 17:54:15
hola me gustaria que me echarais una mano sobre los procesos en c por favor.
despues de andar leyendo algo crei que habia entendido la base, pero a la hora de ponerme a hacer un programita para asegurarme no logro entender la salida.
El codigo en cuestion es el siguiente:

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<sys/types.h>
#include<wait.h>

pid_t hijo1;
pid_t hijo2;
int lok=0;

int main(int x, char *argv[]){


//creacion del priemr hijo
hijo1=fork();

//comprobacion de su correcta creacion
if(hijo1 == -1)//el sistema no permite la creacion de u nuevo hijo
//por falta de recursos
printf("Error\n");
else if(hijo1 == 0)
printf("hijo1\n");
else
printf("padre\n");

//dormir proceso hijo durante 1 segundo
sleep(1);

//imprimir informacion
printf("PID padre: %d \nPID hijo1: %d \nGRUPO: %d \n",getpid(), getppid(), getpgrp());

//esperar por correcta terminacion de su hijo
wait(&hijo1);

//impresion del valor de salida dl proceso hijo
printf("Valor de salida de hijo1: %d\n",WEXITSTATUS(hijo1));

A lo que me sale:

hijo1
padre
PID padre: 15164
PID hijo1: 15163
GRUPO: 15163
Valor de salida de hijo1: 0
PID padre: 15163
PID hijo1: 2717
GRUPO: 15163
Valor de salida de hijo1: 28

Me gustaria haber si me pudierais explicar realmente que hace cada isntruccion y la causa de este orden de salida
Creo que hay algo que falla por eso no lo veo nada claro, pero no sabria decir el que.
y como es que las dos priemras linias son : "hijo1" y "padre" ?
no tendria que ser algo como:
proceso padre creado en el momento de ejecutar el codigo, creo un nuevo hijo y corren los dos procesos paralelos? pero cual tiene prioridad?
Agradezco de antemano toda ayuda, se que no he sido muy especifico en mis necesidades pero creo que queda claro que necesito una aclaracion para poder continuar. Muchas gracias y pasenlo bien.
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