Я пытаюсь перенаправить файловый дескриптор Stderr
изнутри процесса, но, похоже, его реализации нет, и я не вижу четкого пути к чему-то похожему на dup2
из C / C ++.
Я пытался:
- , непосредственно реализующий
Read
(impl Read for Stderr
), но для его покрытия потребовалась бы целая библиотека кода. использование данных в дескрипторе файла, затем в File
, затем в ReadBuf
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);
}
}
Я сосредоточился на consume
из-за того, что мне не нужно было ничего точно возвращатькогда я тестировал свой код, хотя это не сработало.
, поскольку я работаю в системе Linux и не планирую публиковать код, я также подумалперенаправить /proc/self/fd/2 -> /dev/null
, а затем вернуть исходную ссылку на указатель, когда я хотел написать туда.Это было слишком для этой области.
Я также думал об использовании libc::dup2
напрямую - хотя я устал от этого.