- switch (fork()) {
- case -1:
- fprintf(stderr, "fork(): %s", strerror(errno));
- exit(1);
-
- case 0:
- setsid();
- freopen("/dev/null", "r", stdin);
- freopen("/dev/null", "w", stdout);
- freopen("/dev/null", "w", stderr);
- break;
-
- default:
- exit(0);
+ /* Crash-proofing - Sapan*/
+ while (1) {
+ int pid=fork();
+ if (pid==-1) {
+ fprintf(stderr, "fork(): %s", strerror(errno));
+ exit(1);
+ }
+ else if (pid==0) {
+ setsid();
+ freopen("/dev/null", "r", stdin);
+ freopen("/dev/null", "w", stdout);
+ freopen("/dev/null", "w", stderr);
+ break;
+ }
+ else {
+ while (wait3(NULL,0,NULL) < 1);
+ }