summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--polyp/main.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/polyp/main.c b/polyp/main.c
index 43a48f6b..f033c38e 100644
--- a/polyp/main.c
+++ b/polyp/main.c
@@ -35,6 +35,7 @@
#include <memblock.h>
#include <limits.h>
#include <fcntl.h>
+#include <sys/ioctl.h>
#ifdef HAVE_LIBWRAP
#include <syslog.h>
@@ -241,6 +242,7 @@ int main(int argc, char *argv[]) {
if (conf->daemonize) {
pid_t child;
+ int tty_fd;
if (pa_stdio_acquire() < 0) {
pa_log(__FILE__": failed to acquire stdio.\n");
@@ -292,6 +294,15 @@ int main(int argc, char *argv[]) {
open("/dev/null", O_RDONLY);
open("/dev/null", O_WRONLY);
open("/dev/null", O_WRONLY);
+
+ signal(SIGTTOU, SIG_IGN);
+ signal(SIGTTIN, SIG_IGN);
+ signal(SIGTSTP, SIG_IGN);
+
+ if ((tty_fd = open("/dev/tty", O_RDWR)) >= 0) {
+ ioctl(tty_fd, TIOCNOTTY, (char*) 0);
+ close(tty_fd);
+ }
}
chdir("/");