daemonize
This commit is contained in:
parent
8ffa6a6ed1
commit
4f590f9318
1 changed files with 11 additions and 2 deletions
13
mdm/main.c
13
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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue