aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2016-07-11 14:02:16 +0200
committerMattias Andrée <maandree@kth.se>2016-07-11 14:02:16 +0200
commita53b32814439f85977617e1d457f5e963fd4da8d (patch)
tree4bf04f88fe1ab375c06563becf02568551777705 /src
parentUse exit value 2 to indicate that the service is already running (diff)
downloadcoopgammad-a53b32814439f85977617e1d457f5e963fd4da8d.tar.gz
coopgammad-a53b32814439f85977617e1d457f5e963fd4da8d.tar.bz2
coopgammad-a53b32814439f85977617e1d457f5e963fd4da8d.tar.xz
Signal the spawner when the service is initialised enough
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src')
-rw-r--r--src/gammad.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/gammad.c b/src/gammad.c
index ad4d255..eef65b7 100644
--- a/src/gammad.c
+++ b/src/gammad.c
@@ -373,6 +373,10 @@ static void usage(void)
/**
+ * Must not be started without stdout or stderr (may be /dev/null)
+ *
+ * The process closes stdout when the socket has been created
+ *
* @return 0: Successful
* 1: An error occurred
* 2: Already running
@@ -432,6 +436,15 @@ int main(int argc, char** argv)
goto fail;
}
+ /* TODO socket */
+
+ /* Signal the spawner that the service is ready */
+ close(STDOUT_FILENO);
+ /* Avoid potential catastrophes that would occur if a library that is being
+ * used was so mindless as to write to stdout. */
+ if (dup2(STDERR_FILENO, STDOUT_FILENO) < 0)
+ perror(argv0);
+
/* Get partitions */
if (site.partitions_available)
if (!(partitions = calloc(site.partitions_available, sizeof(*partitions))))