diff --git a/include/osmocom/core/application.h b/include/osmocom/core/application.h
index c1642ec..5d09896 100644
--- a/include/osmocom/core/application.h
+++ b/include/osmocom/core/application.h
@@ -13,4 +13,6 @@
 void osmo_init_ignore_signals(void);
 int osmo_init_logging(const struct log_info *);
 
+int osmo_daemonize(void);
+
 #endif
diff --git a/include/osmocom/core/process.h b/include/osmocom/core/process.h
index 2d66382..1dde021 100644
--- a/include/osmocom/core/process.h
+++ b/include/osmocom/core/process.h
@@ -1,6 +1,2 @@
-#ifndef _OSMO_PROCESS_H
-#define _OSMO_PROCESS_H
-
-int osmo_daemonize(void);
-
-#endif
+#warning "Update from osmocom/core/process.h to osmocom/core/application.h"
+#include <osmocom/core/application.h>
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;
