#ifndef _APP_RECORD_SERVICE_SIGNAL_H_
|
#define _APP_RECORD_SERVICE_SIGNAL_H_
|
|
#include <signal.h>
|
#include <sys/types.h>
|
#include <sys/wait.h>
|
#include "ffmpeg/log/log.hpp"
|
|
namespace common{
|
|
static bool quit = false;
|
|
static void sigroutine(int signo){
|
switch(signo){
|
case SIGINT:
|
case SIGHUP:
|
case SIGTERM:
|
quit = true;
|
logif::logIt("\nBIN Recv SIGINIT\n");
|
break;
|
case SIGCHLD:
|
{
|
int status;
|
pid_t pid = -1;
|
while((pid = waitpid(-1, &status, WNOHANG)) > 0){
|
logif::logIt("\nRecv Subprocess %d Quit\n", pid);
|
}
|
}
|
default:
|
break;
|
}
|
}
|
|
static void signal_init(){
|
signal(SIGPIPE, SIG_IGN);
|
|
signal(SIGINT, sigroutine);
|
signal(SIGHUP, sigroutine);
|
signal(SIGTERM, sigroutine);
|
|
signal(SIGCHLD, sigroutine);
|
}
|
}
|
#endif
|