#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\n", ctime(<ime)); // loop forever and spawn shells if the top-shell exits while(1) { int pid=_fork(); if(pid==0) { _execve("/bin/foolshell",argv1,env1); // replace process with our foolshell :) while(1) puts("FATAL ERROR: Something terrible happened. Unable to Execute SHELL!\n"); } // wait until our child process state changes (exits) // and respawn SHELL _wait(pid); printf("fool-init: catched exit of process %d.\n",pid); printf("fool-init: respawning a new fool-shell\n"); } return 0; }