Introduction
Introduction Statistics Contact Development Disclaimer Help
Detach properly from calling process - fiche - A pastebin adjusted for gopher u…
git clone git://vernunftzentrum.de/fiche.git
Log
Files
Refs
LICENSE
---
commit 1d247bf3df29866222634305bc66632101c05a36
parent 80ee24683f7881c2e6dca88b4561f0c5ddd60b41
Author: Christian Kellermann <[email protected]>
Date: Fri, 2 Mar 2018 20:55:05 +0100
Detach properly from calling process
This will fork and create a new session ID. Together with the log file
patches this should make it a step closer to a proper daemon.
Diffstat:
fiche.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/fiche.c b/fiche.c
@@ -281,6 +281,31 @@ int fiche_run(Fiche_Settings settings) {
return -1;
}
+ pid_t pid = fork();
+ if (pid == -1){
+ char *err = strerror(0);
+ print_error("Unable to fork into background: %s", err);
+ if (logfile_handle) fclose(logfile_handle);
+ return -1;
+ }
+ if (pid > 0){
+ //parent
+ if (logfile_handle) fclose(logfile_handle);
+ return 0;
+ }
+
+ if (setsid() == -1){
+ char *err = strerror(0);
+ print_error("Creating new session id: %s", err);
+ if (logfile_handle) fclose(logfile_handle);
+ return -1;
+ }
+
+ // We are detached so close those to avoid noise
+ fclose(stdin);
+ fclose(stdout);
+ fclose(stderr);
+
// Main loop in this method
start_server(&settings);
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.