#include<stdio.h>#include<unistd.h>#include<stdlib.h>int main(){int pid;int i=0;int eo;int valor;int tiempo=20;int v[10];int n=0; for (i=0;i<3;i++) { pid=fork(); if(pid==0) { printf("el pid es: %dn",pid); printf("el otro pid es: %dn",getpid()); //creo un hijo if(i==1) { pid=fork(); v[n]=getpid(); printf("v %dn",v[n]); if(pid==0) { printf("MACARRON %dn",pid); printf("EL OTRO LADO: %dn",getpid()); sleep(3); printf("MAN MATAO %dn",getpid()); int j; /* for(j=0;j<3;j++){ printf("se mete j %dn",j); pid=fork(); if(pid==0){ //esta creando hijos printf("MACARRON %dn",pid); printf("EL OTRO LADO1: %dn",getpid()); //sleep(3); exit(0); } //exit(0); } sleep(5); //printf("aqui salen"); exit(0); */ } sleep(5); exit(0); } sleep(15); exit(0); } printf("v1 %dn",v[n]); } sleep(10); int status; waitpid(v[0], &status, 0); printf("soy el proceso con pid %d y he terminadon",v[0]); for(i=0;i<3;i++) { valor=wait(&eo); printf("man matao %dn",valor); } //el pid del padre printf("man matao1 %dn",getpid()); exit(0);return(0);}//compilar gcc nombre -o p1
pero si has ejecutado el código ,verás que el valor no se guarda al salir del proceso
printf("el pid es: %dn",pid);printf("el otro pid es: %dn",getpid());
otra cosa,cuando me dices que me haga una funcion para poner el código ejecutado por los hijos ,que quieres decir en concreto,? eso no te entendí bien....
al principio en esa posicion
el problema es que solo puedo utilizar fork , y para matar pues exit,wait,waitpid y todo eso...
Sobre lo de ponerlo bonito es lo último, primero tengo que ver los efectos de dicho programa y que salga lo que quiero,,porque por ahora me estoy haciendo un poco lio al no ser todo secuencial.....
(estas llamadas no matan, sino ponen en bloqueo a los procesos hasta que otros cambien de estado)
al menos en Unix, nunca tendras un PID igual a 0, y menos si un usuario lo ejecuta...
pero de manera recursiva ya si que no puedo matar los procesossssss.....que alguien me ayudeeeeeee
es necesario que ponga codigo?
que alguien que busque y tenga que entregar la misma practica...lo copie
Cita de: "su -"al menos en Unix, nunca tendras un PID igual a 0, y menos si un usuario lo ejecuta...Tienes razón, pero no. Desde luego en POSIX no hay PID = 0 da igual si lo ejecuta el usuario o no. Pero este no es un PID real. Es el valor que devuelve fork() para el proceso hijo, de ahí hijo_main(). Con getpid() obtendrías el PID. Como veo que no estás familiarizado con fork(), haz un man 2 fork.Salud