Use STDERR_FILENO instead of opening /dev/stderr.

/dev/stderr is a symlink to /proc/self/fd/2, so this only has different
behavior when we're out of file descriptors, or when STDERR_FILENO is in
a different state (it's not at the end, it's not writable, etc.).

Test: mma
Change-Id: Ie99688d810218eca8482ff060373e88c4e001824
This commit is contained in:
Josh Gao 2016-10-07 13:21:03 -07:00
parent 1ba0e27462
commit 59bde2e8f4
1 changed files with 1 additions and 7 deletions

View File

@ -432,11 +432,6 @@ int __libc_format_fd(int fd, const char* format, ...) {
}
static int __libc_write_stderr(const char* tag, const char* msg) {
int fd = TEMP_FAILURE_RETRY(open("/dev/stderr", O_CLOEXEC | O_WRONLY | O_APPEND));
if (fd == -1) {
return -1;
}
iovec vec[4];
vec[0].iov_base = const_cast<char*>(tag);
vec[0].iov_len = strlen(tag);
@ -447,8 +442,7 @@ static int __libc_write_stderr(const char* tag, const char* msg) {
vec[3].iov_base = const_cast<char*>("\n");
vec[3].iov_len = 1;
int result = TEMP_FAILURE_RETRY(writev(fd, vec, 4));
close(fd);
int result = TEMP_FAILURE_RETRY(writev(STDERR_FILENO, vec, 4));
return result;
}