1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
From: =?utf-8?b?SmFuIE1vasW+w63FoQ==?= <jan.mojzis@gmail.com>
Date: Sun, 7 Feb 2021 22:33:42 +0100
Subject: supervise.c restart process when fork fails
Forwarded: no
---
daemontools-0.76/src/supervise.c | 8 ++++++++
1 file changed, 8 insertions(+)
Index: daemontools/daemontools-0.76/src/supervise.c
===================================================================
--- daemontools.orig/daemontools-0.76/src/supervise.c
+++ daemontools/daemontools-0.76/src/supervise.c
@@ -86,6 +86,8 @@ void trigger(void)
const char *run[2] = { "./run", 0 };
+int flagfailed = 0;
+
void trystart(void)
{
int f;
@@ -94,6 +96,7 @@ void trystart(void)
case -1:
strerr_warn4(WARNING,"unable to fork for ",dir,", sleeping 60 seconds: ",&strerr_sys);
deepsleep(60);
+ flagfailed = 1;
trigger();
return;
case 0:
@@ -153,6 +156,11 @@ void doit(void)
}
}
+ if (flagfailed && flagwant && flagwantup){
+ flagfailed = 0;
+ trystart();
+ }
+
if (read(fdcontrol,&ch,1) == 1)
switch(ch) {
case 'd':
|