#include #include int main(int argc, char **argv) { char *argv1[]={"/bin/foolshell",0}; char *env1[]={"PS1=\033[34m$\033[37m","PWD=/home/miguel","PATH=/bin","TERM=fool-term",0}; time_t ltime; time(<ime); printf("fool-init: current time: %s", ctime(<ime)); // loop forever and spawn shells if the top-shell exits while(1) { int pid=_fork(); int status; if(pid==0) { _execve("/bin/foolshell",argv1,env1); // replace process with our foolshell :) puts("FATAL ERROR: Something terrible happened. Unable to Execute SHELL!"); while(1);// hang } // wait until our child process state changes (exits) // and respawn SHELL _wait(&status); printf("fool-init: catched exit of process %d.\n",pid); printf("fool-init: respawning a Fools Shell\n"); } return 0; }