mirror of
https://git.FreeBSD.org/src.git
synced 2025-01-09 13:42:56 +00:00
Use closefrom(2) instead of close(2) in a loop.
MFC after: 1 week
This commit is contained in:
parent
5ad4a7c74a
commit
6c71649c5f
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=214119
@ -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.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user