From 4f590f931815b731ebafddcf2b4d583dd87f7370 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Tue, 18 Nov 2025 16:12:16 +0900 Subject: [PATCH] daemonize --- mdm/main.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/mdm/main.c b/mdm/main.c index 05c6360..97a9738 100644 --- a/mdm/main.c +++ b/mdm/main.c @@ -1,6 +1,7 @@ #include "mdm.h" int is_launch_x = 1; +int is_daemon = 1; gid_t gid; uid_t uid; @@ -9,11 +10,14 @@ char* run; int main(int argc, char** argv) { int i, st; char* backup = NULL; + pid_t pid; for(i = 1; i < argc; i++) { if(argv[i][0] == '-') { if(strcmp(argv[i], "-X") == 0 || strcmp(argv[i], "--no-launch-x") == 0) { is_launch_x = 0; + }else if(strcmp(argv[i], "-d") == 0 || strcmp(argv[i], "--no-daemon") == 0) { + is_daemon = 0; } else { fprintf(stderr, "%s: bad option: %s\n", argv[0], argv[i]); return 1; @@ -26,6 +30,13 @@ int main(int argc, char** argv) { return 1; } + if(is_daemon && (pid = fork()) != 0){ + FILE* f = fopen("/var/run/mdm.pid", "w"); + fprintf(f, "%d\n", pid); + fclose(f); + return 0; + } + if(access(CONFDIR "/mdm", F_OK) != 0) mkdir(CONFDIR "/mdm", 0755); if(access(CONFDIR "/mdm/mdmrc", F_OK) != 0) MDEFileCopy(DATADIR "/examples/mdm/mdmrc", CONFDIR "/mdm/mdmrc"); @@ -33,8 +44,6 @@ int main(int argc, char** argv) { if(getenv("DISPLAY") != NULL) backup = MDEStringDuplicate(getenv("DISPLAY")); do { - pid_t pid; - setenv("DISPLAY", backup == NULL ? "" : backup, 1); if(is_launch_x && (st = launch_x()) != 0) return st;