supervise-daemon: use nanosleep() instead of sleep()
We will be using sigalrm in this process for health checking, and sigalrm cannot be used with sleep() safely.
This commit is contained in:
parent
7ee3e5b2d6
commit
eca4357892
@ -425,6 +425,7 @@ static void supervisor(char *exec, char **argv)
|
|||||||
FILE *fp;
|
FILE *fp;
|
||||||
int i;
|
int i;
|
||||||
int nkilled;
|
int nkilled;
|
||||||
|
struct timespec ts;
|
||||||
time_t respawn_now= 0;
|
time_t respawn_now= 0;
|
||||||
time_t first_spawn= 0;
|
time_t first_spawn= 0;
|
||||||
|
|
||||||
@ -497,7 +498,9 @@ static void supervisor(char *exec, char **argv)
|
|||||||
if (nkilled > 0)
|
if (nkilled > 0)
|
||||||
syslog(LOG_INFO, "killed %d processes", nkilled);
|
syslog(LOG_INFO, "killed %d processes", nkilled);
|
||||||
} else {
|
} else {
|
||||||
sleep(respawn_delay);
|
ts.tv_sec = respawn_delay;
|
||||||
|
ts.tv_nsec = 0;
|
||||||
|
nanosleep(&ts, NULL);
|
||||||
if (respawn_max > 0 && respawn_period > 0) {
|
if (respawn_max > 0 && respawn_period > 0) {
|
||||||
respawn_now = time(NULL);
|
respawn_now = time(NULL);
|
||||||
if (first_spawn == 0)
|
if (first_spawn == 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user