00001 /* INIT */ 00002 #include "stdarg.h" 00003 #include <sys/types.h> 00004 #include <lib/routix.h> 00005 #include <routix.h> 00006 #include <string.h> 00007 #include <signal.h> 00008 00009 void sig_chld(int); 00010 00011 char *args[] = {"Init", NULL}; 00012 00013 int main (void) 00014 { 00015 printf("Iniciando Init.bin\n"); 00016 signal(SIGCHLD, sig_chld); 00017 pid_t pid = fork(); 00018 if (pid==-1) { 00019 perror("init.bin"); 00020 exit(-1); 00021 } 00022 else if (pid==0) { 00023 if (execve("shell.bin", args, NULL)==-1) 00024 perror("shell.bin"); 00025 } 00026 else while(1); 00027 } 00028 00029 void sig_chld(int signo) 00030 { 00031 pid_t pid; 00032 int value; 00033 pid = waitpid(-1, &value, WNOHANG); 00034 printf("Init catcheo la finalizacion de %d con el valor %d\n", pid, value); 00035 }