diff options
author | Jochen Dolze <vdr@dolze.de> | 2010-04-04 22:26:03 +0200 |
---|---|---|
committer | Jochen Dolze <vdr@dolze.de> | 2010-04-04 22:26:03 +0200 |
commit | a1f19e122cca43e5c07079e99e3544301cf3a1c8 (patch) | |
tree | 5ec3e8da68105e9c0cee959b7c0529f3bede7287 /command/markad-standalone.cpp | |
parent | 2aed1692fe4267ba15f0a4748979248e223d14fd (diff) | |
download | vdr-plugin-markad-a1f19e122cca43e5c07079e99e3544301cf3a1c8.tar.gz vdr-plugin-markad-a1f19e122cca43e5c07079e99e3544301cf3a1c8.tar.bz2 |
Added handler for SIGTSTP/SIGCONT
Diffstat (limited to 'command/markad-standalone.cpp')
-rw-r--r-- | command/markad-standalone.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/command/markad-standalone.cpp b/command/markad-standalone.cpp index ebca1eb..3eb2e05 100644 --- a/command/markad-standalone.cpp +++ b/command/markad-standalone.cpp @@ -1315,10 +1315,23 @@ int usage() return -1; } -void signal_handler(int sig) +static void signal_handler(int sig) { switch (sig) { + case SIGTSTP: + isyslog("paused by signal"); + sigset_t mask; + sigemptyset(&mask); + sigaddset(&mask, SIGTSTP); + sigprocmask(SIG_UNBLOCK, &mask, NULL); + signal(SIGTSTP,SIG_DFL); + kill(getpid(),SIGTSTP); + signal(SIGTSTP,signal_handler); + break; + case SIGCONT: + isyslog("continued by signal"); + break; case SIGABRT: esyslog("aborted by signal"); if (cmasta) cmasta->SetAbort(); @@ -1802,6 +1815,9 @@ int main(int argc, char *argv[]) signal(SIGSEGV, signal_handler); signal(SIGABRT, signal_handler); signal(SIGUSR1, signal_handler); + signal(SIGTSTP, signal_handler); + signal(SIGCONT, signal_handler); + cmasta->Process(recDir); delete cmasta; |