diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 20 |
1 files changed, 15 insertions, 5 deletions
@@ -1,6 +1,6 @@ /* * Copyright (c) 2002-2003 Erik Fears - * Copyright (c) 2014-2019 ircd-hybrid development team + * Copyright (c) 2014-2020 ircd-hybrid development team * * 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 @@ -157,10 +157,20 @@ main(int argc, char *argv[]) /* Reset file mode. */ umask(077); /* umask 077: u=rwx,g=,o= */ - /* Close file descriptors. */ - close(STDIN_FILENO); - close(STDOUT_FILENO); - close(STDERR_FILENO); + /* Connect stdin, stdout, and stderr to /dev/null */ + int fd = open("/dev/null", O_RDWR); + if (fd < 0) + { + perror("open()"); + exit(EXIT_FAILURE); + } + + dup2(fd, STDIN_FILENO); + dup2(fd, STDOUT_FILENO); + dup2(fd, STDERR_FILENO); + + if (fd > STDERR_FILENO) + close(fd); log_open(LOGFILE); } |