76 lines
1.9 KiB
Diff
76 lines
1.9 KiB
Diff
From 7b6ff0e4a7b5e7d422c787d55225ecaa32afc8e4 Mon Sep 17 00:00:00 2001
|
|
From: Mono <dev@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
|
|
|