1
0
mirror of https://github.com/MatMoul/g810-led.git synced 2025-11-21 02:52:06 +00:00

fork two time, daemon unit

This commit is contained in:
2017-05-14 18:55:16 +02:00
parent 21fc1663ba
commit f8ea392738
3 changed files with 30 additions and 10 deletions

View File

@@ -17,16 +17,35 @@ namespace daemonizer {
void start(char *arg0, std::string scenarioFile) {
pid_t pid, sid;
pid = fork();
if (pid < 0) exit(EXIT_FAILURE);
if (pid > 0) exit(EXIT_SUCCESS);
sid = setsid();
if (sid < 0) exit(EXIT_FAILURE);
signal(SIGCHLD,SIG_IGN); /* ignore child */
signal(SIGHUP,SIG_IGN); /* ignore child */
pid = fork();
if (pid < 0) exit(EXIT_FAILURE);
if (pid > 0) exit(EXIT_SUCCESS);
umask(0);
sid = setsid();
if (sid < 0) exit(EXIT_FAILURE);
if (chdir("/") < 0) exit(EXIT_FAILURE);
//signal(SIGINT, stop);
std::cout<<getpid()<<std::endl;
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
signal(SIGCHLD,SIG_IGN); /* ignore child */
signal(SIGHUP,SIG_IGN); /* ignore child */
signal(SIGTSTP,SIG_IGN); /* ignore tty signals */
signal(SIGTTOU,SIG_IGN);
signal(SIGTTIN,SIG_IGN);
//signal(SIGINT, stop);
LedKeyboard kbd;
kbd.open();
while(true){