From 6aec61d4a4a16bbc03239f7d6e921ca641ee036a Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Thu, 28 Oct 2021 16:40:42 +0300 Subject: [PATCH] remove pidfile only when parent process died --- canserver/main.c | 9 ++++++--- canserver/socket.c | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/canserver/main.c b/canserver/main.c index 025fba2..5c2522d 100644 --- a/canserver/main.c +++ b/canserver/main.c @@ -31,11 +31,14 @@ #include "processmotors.h" glob_pars *GP; // non-static: to use in outhern functions +static pid_t childpid; void signals(int signo){ //restore_tty(); - unlink(GP->pidfile); - LOGERR("Exit with status %d", signo); + if(childpid){ // unlink PID-file only from father + unlink(GP->pidfile); + LOGERR("Exit with status %d", signo); + } exit(signo); } @@ -81,7 +84,7 @@ int main(int argc, char **argv){ check4running(self, GP->pidfile); FREE(self); while(1){ // guard for dead processes - pid_t childpid = fork(); + childpid = fork(); if(childpid){ LOGDBG("Create child with PID %d", childpid); DBG("Created child with PID %d\n", childpid); diff --git a/canserver/socket.c b/canserver/socket.c index 0cee2a5..9973b63 100644 --- a/canserver/socket.c +++ b/canserver/socket.c @@ -104,7 +104,7 @@ static void *server(void *asock){ } int nfd = 1; // max amount of opened fd (+1 for server socket) -#define MAX_FDS (3) +#define MAX_FDS (11) struct pollfd poll_set[MAX_FDS]; memset(poll_set, 0, sizeof(poll_set)); poll_set[0].fd = sock;