Rust 为什么写入打开的文件时会出现错误的文件描述符错误?

Rust 为什么写入打开的文件时会出现错误的文件描述符错误?,rust,Rust,对文件调用write_all将返回一个错误,其描述为:os error。调试打印错误输出:Err(错误{repr:Os(9)}) 这个错误是什么意思?您没有包含任何代码,所以我不得不对您正在做的事情进行猜测。这里有一段代码重现了您的错误: use std::fs; use std::io::Write; fn main() { let mut f = fs::File::open("/").unwrap(); // f.write_all(b"hello").unwrap()

对文件调用
write_all
将返回一个错误,其描述为:
os error
。调试打印错误输出:
Err(错误{repr:Os(9)})


这个错误是什么意思?

您没有包含任何代码,所以我不得不对您正在做的事情进行猜测。这里有一段代码重现了您的错误:

use std::fs;
use std::io::Write;

fn main() {
    let mut f = fs::File::open("/").unwrap();

    // f.write_all(b"hello").unwrap();
    // Error { repr: Os(9) }

    match f.write_all(b"hello") {
        Ok(..) => {},
        Err(e) => println!("{}", e),
    }
    // Bad file descriptor (os error 9)
}
如果使用(
{}
)格式而不是(
{:?}
),您将看到一条比错误代码更好的错误消息。请注意,
unwrap
将使用
Debug
格式化程序,因此在这种情况下必须使用
match

您还可以在内核源代码中使用。你没有指明你是在运行Windows(不太可能)、OSX还是Linux,所以我猜是Linux


有很多方法可以解释代码的含义,但我相信您知道如何搜索这些方法,现在您已经掌握了问题的处理方法。

谢谢!我没有想到使用显示格式而不是调试来获得更详细的信息。