penguin/monok8s

k8s image for Mono Gateway Dev Kit

patches/ask/cmm/0001-cmm-add-foreground-mode.patch

raw ยท 1967 bytes

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