I'm attempting redirect the Stderr
file descriptor from inside the process, but there seems to be no implementations of it, and I don't see a clear route to anything similar to dup2
from C/C++.
I've tried:
- directly implementing
Read
(impl Read for Stderr
), but it'd take an entire library of code to cover. consuming the data in the file descriptor, then into
File
, then intoReadBuf
trait FDReader { fn consume(&mut self); } impl FDReader for Stderr { fn consume(&mut self) { let f = std::fs::File::from_raw_fd(self.as_raw_fd()); let mut extract = String::new(); BufReader::new(f).read_to_string(&mut extract); } }
I focused on
consume
due to the fact I didn't have to exactly return anything when I was testing my code, though this didn't work.since I'm running on a Linux system, and I don't plan to publish the code, I also considered redirecting
/proc/self/fd/2 -> /dev/null
and then return the original pointer reference when I wanted to write to there. This was way over the top for this scope.
I also thought about using libc::dup2
directly - though I'm weary of it.