diff --git a/src/Makefile.am b/src/Makefile.am
index 1ae3cff..bbe6286 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,7 +14,7 @@
 			 write_queue.c utils.c socket.c \
 			 logging.c logging_syslog.c rate_ctr.c \
 			 gsmtap_util.c crc16.c panic.c backtrace.c \
-			 process.c conv.c application.c
+			 conv.c application.c
 
 if ENABLE_PLUGIN
 libosmocore_la_SOURCES += plugin.c
diff --git a/src/application.c b/src/application.c
index 96b4204..5f8f447 100644
--- a/src/application.c
+++ b/src/application.c
@@ -1,5 +1,6 @@
 /* Utility functions to setup applications */
 /*
+ * (C) 2010 by Harald Welte <laforge@gnumonks.org>
  * (C) 2011 by Holger Hans Peter Freyther
  *
  * All Rights Reserved
@@ -24,6 +25,11 @@
 #include <osmocom/core/logging.h>
 
 #include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/stat.h>
 
 struct log_target *osmo_stderr_target;
 
@@ -47,3 +53,50 @@
 	log_set_all_filter(osmo_stderr_target, 1);
 	return 0;
 }
+
+int osmo_daemonize(void)
+{
+	int rc;
+	pid_t pid, sid;
+
+	/* Check if parent PID == init, in which case we are already a daemon */
+	if (getppid() == 1)
+		return -EEXIST;
+
+	/* Fork from the parent process */
+	pid = fork();
+	if (pid < 0) {
+		/* some error happened */
+		return pid;
+	}
+
+	if (pid > 0) {
+		/* if we have received a positive PID, then we are the parent
+		 * and can exit */
+		exit(0);
+	}
+
+	/* FIXME: do we really want this? */
+	umask(0);
+
+	/* Create a new session and set process group ID */
+	sid = setsid();
+	if (sid < 0)
+		return sid;
+
+	/* Change to the /tmp directory, which prevents the CWD from being locked
+	 * and unable to remove it */
+	rc = chdir("/tmp");
+	if (rc < 0)
+		return rc;
+
+	/* Redirect stdio to /dev/null */
+/* since C89/C99 says stderr is a macro, we can safely do this! */
+#ifdef stderr
+	freopen("/dev/null", "r", stdin);
+	freopen("/dev/null", "w", stdout);
+	freopen("/dev/null", "w", stderr);
+#endif
+
+	return 0;
+}
diff --git a/src/process.c b/src/process.c
deleted file mode 100644
index 7f4f12c..0000000
--- a/src/process.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Process handling support code */
-
-/* (C) 2010 by Harald Welte <laforge@gnumonks.org>
- * All Rights Reserved
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <errno.h>
-#include <sys/stat.h>
-
-int osmo_daemonize(void)
-{
-	int rc;
-	pid_t pid, sid;
-
-	/* Check if parent PID == init, in which case we are already a daemon */
-	if (getppid() == 1)
-		return -EEXIST;
-
-	/* Fork from the parent process */
-	pid = fork();
-	if (pid < 0) {
-		/* some error happened */
-		return pid;
-	}
-
-	if (pid > 0) {
-		/* if we have received a positive PID, then we are the parent
- 		 * and can exit */
-		exit(0);
-	}
-
-	/* FIXME: do we really want this? */
-	umask(0);
-
-	/* Create a new session and set process group ID */
-	sid = setsid();
-	if (sid < 0)
-		return sid;
-
-	/* Change to the /tmp directory, which prevents the CWD from being locked
-	 * and unable to remove it */
-	rc = chdir("/tmp");
-	if (rc < 0)
-		return rc;
-
-	/* Redirect stdio to /dev/null */
-/* since C89/C99 says stderr is a macro, we can safely do this! */
-#ifdef stderr
-	freopen("/dev/null", "r", stdin);
-	freopen("/dev/null", "w", stdout);
-	freopen("/dev/null", "w", stderr);
-#endif
-
-	return 0;
-}
diff --git a/src/select.c b/src/select.c
index 4ea9536..4b002ae 100644
--- a/src/select.c
+++ b/src/select.c
@@ -47,6 +47,15 @@
 	if (flags < 0)
 		return flags;
 
+	/* set close-on-exec flag */
+	flags = fcntl(fd->fd, F_GETFD);
+	if (flags < 0)
+		return flags;
+	flags |= FD_CLOEXEC;
+	flags = fcntl(fd->fd, F_SETFD, flags);
+	if (flags < 0)
+		return flags;
+
 	/* Register FD */
 	if (fd->fd > maxfd)
 		maxfd = fd->fd;
