version 1.15, 2007/03/23 17:18:07 |
version 1.16, 2007/03/25 23:18:56 |
|
|
(void)signal(SIGINT, SIG_IGN); |
(void)signal(SIGINT, SIG_IGN); |
(void)signal(SIGQUIT, SIG_IGN); |
(void)signal(SIGQUIT, SIG_IGN); |
if ((pid = fork()) < 0) { |
if ((pid = fork()) < 0) { |
|
int saved_errno = errno; |
|
|
(void)signal(SIGHUP, SIG_DFL); |
(void)signal(SIGHUP, SIG_DFL); |
(void)signal(SIGINT, SIG_DFL); |
(void)signal(SIGINT, SIG_DFL); |
(void)signal(SIGQUIT, SIG_DFL); |
(void)signal(SIGQUIT, SIG_DFL); |
if (errno == EPROCLIM) { |
if (saved_errno == EPROCLIM) { |
warnx("you have too many processes"); |
warnx("you have too many processes"); |
free(p); |
free(p); |
return(0); |
return(0); |
} |
} |
if (errno == EAGAIN) { |
if (saved_errno == EAGAIN) { |
sleep(1); |
sleep(1); |
goto top; |
goto top; |
} |
} |