From 7b6ff0e4a7b5e7d422c787d55225ecaa32afc8e4 Mon Sep 17 00:00:00 2001 From: Mono Date: Sun, 10 May 2026 15:53:21 +0000 Subject: [PATCH] cmm: add foreground mode --- cmm/src/cmm.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/cmm/src/cmm.c b/cmm/src/cmm.c index 6452476..1bbc73e 100644 --- a/cmm/src/cmm.c +++ b/cmm/src/cmm.c @@ -339,6 +339,7 @@ int main (int argc, char ** argv) struct sigaction action; int option,ii; char *buf; + int foreground = 0; int ret = 0; int ch; @@ -402,7 +403,7 @@ int main (int argc, char ** argv) } // Analyse the command line - while ((option = getopt(argc, argv, "c:f:n:hv")) != -1) + while ((option = getopt(argc, argv, "c:f:n:hvD")) != -1) { switch (option) { @@ -424,6 +425,10 @@ int main (int argc, char ** argv) } break; + case 'D': // Do not daemonize; run in foreground + foreground = 1; + break; + case 'h': // Print help cmmHelp(); return 0; @@ -443,9 +448,11 @@ int main (int argc, char ** argv) goto err0; } - // Daemonize the application - if(daemon(0, 1) == -1) - goto err0; + // Daemonize the application unless foreground mode was requested + if (!foreground) { + if(daemon(0, 1) == -1) + goto err0; + } //Ensure clean termination action.sa_handler = sig_term_hdlr; sigemptyset(&action.sa_mask); @@ -471,9 +478,12 @@ int main (int argc, char ** argv) //schedParams.sched_priority = 99; //sched_setscheduler(0, SCHED_FIFO, &schedParams); - //Init process does not set stdout on console - if(freopen("/dev/console", "w", stdout) == NULL) - goto err0; + // Init process does not set stdout on console. + // In foreground mode, keep stdout attached to the caller/container. + if (!foreground) { + if(freopen("/dev/console", "w", stdout) == NULL) + goto err0; + } sigemptyset(&block_mask); sigaddset(&block_mask, SIGTERM); sigaddset(&block_mask, SIGPIPE); -- 2.47.3