Código
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> int a,ing[50],b,tub[2]; void pedir (void) { int num,i,fact,j,temp; num=10; close(tub[0]); do { printf("ingrese el numero \n"); scanf("%i",&num); write(tub[1], &num, sizeof(int)); ing[a]=num; a++; for(i=num;i>0;i--) { fact=fact*i; } printf("factorial: %i \n",fact); fact=1; if(num<=0) { for(i=0;i<=a-1;i++) { for(j=i;j<=a-1;j++) { if(ing[j]<=ing[i]) { int temp=ing[j]; ing[j]=ing[i]; ing[i]=temp; } } } printf("ordenada: \n"); for(i=0;i<a;i++) { printf("%i \t",ing[i]); } printf("\n"); } }while(num>0); } void ppadre (void) { sleep(2); int numl; numl=1; printf("ola que ase saliendose solo o que ase"); do{ int i,conta,o; int primos[50]; int pos=0; close(tub[1]); for(i=1;i<=numl;i++) { conta=0; for(o=1;o<=i;o++) { if(i%o==0) conta++; } if(conta==2) { primos[pos]=i; pos++; } } o=1; for(i=0;i<pos;i++) { if(numl%primos[i]==0) { o=o*primos[i]; printf("va en %i\n",o); } if(o==numl) { printf("terminado: %i\n",o); i=pos; } if(i==(pos-1) && o!=numl) { i=-1; } } }while(numl>0); } void main (void) { a=0; pid_t pid; pid = fork (); pipe(tub); switch(pid) { case -1: // error del fork<) printf("error al crear el proceso\n"); break; case 0: // proceso hijo //printf("hijo\n"); pedir(); break; default: // padre //printf("yo soy tu padre\n"); ppadre; break; } }