aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRafael Diniz <rafael@riseup.net>2019-01-28 22:37:46 -0200
committerRafael Diniz <rafael@riseup.net>2019-01-29 12:32:58 -0200
commitf0af1b051af6c17ef35b1a1f9519a54e5a67ad33 (patch)
treefec8e04b5b4d883c957b034360bf43a6b688589a
parent99278b105018af24cc5a28673ffa960e933f3979 (diff)
Added support for daemonize to osmo-pcu.
-rw-r--r--src/pcu_main.cpp17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp
index 7480842..fe85160 100644
--- a/src/pcu_main.cpp
+++ b/src/pcu_main.cpp
@@ -60,6 +60,7 @@ void *tall_pcu_ctx = NULL;
extern void *bv_tall_ctx;
static int quit = 0;
static int rt_prio = -1;
+static bool daemonize = false;
static const char *gsmtap_addr = "localhost"; // FIXME: use gengetopt's default value instead
static void print_help()
@@ -75,6 +76,8 @@ static void print_help()
" -V --version print version\n"
" -r --realtime PRIO Use SCHED_RR with the specified "
"priority\n"
+ " -D --daemonize Fork the process into a background"
+ "daemon\n"
" -i --gsmtap-ip The destination IP used for GSMTAP.\n"
);
}
@@ -91,12 +94,13 @@ static void handle_options(int argc, char **argv)
{ "mnc", 1, 0, 'n' },
{ "version", 0, 0, 'V' },
{ "realtime", 1, 0, 'r' },
+ { "daemonize", 0, 0, 'D' },
{ "exit", 0, 0, 'e' },
{ "gsmtap-ip", 1, 0, 'i' },
{ 0, 0, 0, 0 }
};
- c = getopt_long(argc, argv, "hc:m:n:Vr:e:i:",
+ c = getopt_long(argc, argv, "hc:m:n:Vr:De:i:",
long_options, &option_idx);
if (c == -1)
break;
@@ -130,6 +134,9 @@ static void handle_options(int argc, char **argv)
case 'r':
rt_prio = atoi(optarg);
break;
+ case 'D':
+ daemonize = true;
+ break;
case 'e':
fprintf(stderr, "Warning: Option '-e' is deprecated!\n");
break;
@@ -329,6 +336,14 @@ int main(int argc, char *argv[])
}
}
+ if (daemonize) {
+ rc = osmo_daemonize();
+ if (rc < 0) {
+ perror("Error during daemonize");
+ exit(1);
+ }
+ }
+
while (!quit) {
osmo_gsm_timers_check();
osmo_gsm_timers_prepare();