Use closefrom(2) instead of close(2) in a loop.

MFC after:	1 week
This commit is contained in:
Pawel Jakub Dawidek 2010-10-20 21:10:01 +00:00
parent 5ad4a7c74a
commit 6c71649c5f
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=214119

View File

@ -88,32 +88,19 @@ static void hook_free(struct hookproc *hp);
static void
descriptors(void)
{
long maxfd;
int fd;
/*
* Close all descriptors.
* Close all (or almost all) descriptors.
*/
maxfd = sysconf(_SC_OPEN_MAX);
if (maxfd < 0) {
pjdlog_errno(LOG_WARNING, "sysconf(_SC_OPEN_MAX) failed");
maxfd = 1024;
}
for (fd = 0; fd <= maxfd; fd++) {
switch (fd) {
case STDIN_FILENO:
case STDOUT_FILENO:
case STDERR_FILENO:
if (pjdlog_mode_get() == PJDLOG_MODE_STD)
break;
/* FALLTHROUGH */
default:
close(fd);
break;
}
}
if (pjdlog_mode_get() == PJDLOG_MODE_STD)
if (pjdlog_mode_get() == PJDLOG_MODE_STD) {
closefrom(MAX(MAX(STDIN_FILENO, STDOUT_FILENO),
STDERR_FILENO) + 1);
return;
}
closefrom(0);
/*
* Redirect stdin, stdout and stderr to /dev/null.
*/