daemon: simplified daemonize_close_stdin()

Don't bother to call fstat() or isatty() on STDIN_FILENO.
This commit is contained in:
Max Kellermann 2008-12-30 16:28:18 +01:00
parent 6c0f5fc612
commit cdf1eaeb2c

View File

@ -31,24 +31,14 @@
void
daemonize_close_stdin(void)
{
int fd, st;
struct stat ss;
int fd = open("/dev/null", O_RDONLY);
if ((st = fstat(STDIN_FILENO, &ss)) < 0) {
if ((fd = open("/dev/null", O_RDONLY) > 0)) {
g_debug("stdin closed, and could not open /dev/null "
"as fd=0, some external library bugs "
"may be exposed...");
close(fd);
}
return;
if (fd < 0)
close(STDIN_FILENO);
else if (fd != STDIN_FILENO) {
dup2(fd, STDIN_FILENO);
close(fd);
}
if (!isatty(STDIN_FILENO))
return;
if ((fd = open("/dev/null", O_RDONLY)) < 0)
g_error("failed to open /dev/null %s", strerror(errno));
if (dup2(fd, STDIN_FILENO) < 0)
g_error("dup2 stdin: %s", strerror(errno));
}
void