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:
parent
1ba0e27462
commit
59bde2e8f4
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue