diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-05-20 10:53:30 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-05-20 10:53:30 +0300 |
commit | ddb46c6aa42ada061e51c635c0230e4dc8eab881 (patch) | |
tree | b003ae6af354f553207981b4fc281e8f9e19c60e /src/genrc.h | |
parent | ed8389beadb7cf1f8d95fe7addbc9ff2783f4d07 (diff) | |
download | genrc-ddb46c6aa42ada061e51c635c0230e4dc8eab881.tar.gz genrc-ddb46c6aa42ada061e51c635c0230e4dc8eab881.tar.bz2 |
Sentinel mode: restart the program on certain conditions
* Makefile.am: Create the ChangeLog file from git log.
* configure.ac: Request git2chg
* src/com_start.c: Use sigaction instead of signal.
* src/genrc.8: Document new options.
* src/genrc.c: New options --restart-on-exit and --restart-on-signal.
* src/genrc.h (str_to_sig, str_to_int): New prototypes.
(add_restart_condition): New prototype.
* src/sentinel.c (restart_on, add_restart_condition):
(check_failure_rate): New functions.
(wait_loop): Return if restart is requested.
(sentinel): Restart the program if needed.
Diffstat (limited to 'src/genrc.h')
-rw-r--r-- | src/genrc.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/genrc.h b/src/genrc.h index 9842016..c6ee57b 100644 --- a/src/genrc.h +++ b/src/genrc.h @@ -60,12 +60,15 @@ void pidlist_kill(PIDLIST *plist, int sig); pid_t strtopid(char const *str); int pid_is_running(pid_t pid); void runas(void); +int str_to_sig(char const *); +int str_to_int(char const *); + enum { MATCH_REGEX, /* extended POSIX regexp match (default) */ MATCH_PCRE, /* PCRE match (not implemented) */ MATCH_GLOB, /* glob pattern match */ MATCH_EXACT, /* exact match */ @@ -106,13 +109,20 @@ int match_regex(PROCSCANBUF buf, char const *arg); void match_pcre_init(PROCSCANBUF buf, char const *pattern); void match_pcre_free(PROCSCANBUF buf); int match_pcre(PROCSCANBUF buf, char const *arg); +enum { + RESTART_ON_EXIT, + RESTART_ON_SIGNAL +}; +void add_restart_condition(int type, char const *arg); + + struct genrc_pid_closure { char const *name; int (*pid)(struct genrc_pid_closure *, PIDLIST *); }; typedef struct genrc_pid_closure GENRC_PID_CLOSURE; |