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

Why do I get a Bad File Descriptor error when writing to opened File?

在文件 returns 上调用 write_all 时出错,描述为:os error。调试打印错误输出:Err(Error { 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)
}

如果您使用 Display ({}) format instead of Debug ({:?}),您将看到一条比错误代码更好的错误消息。请注意 unwrap 将使用 Debug 格式化程序,因此在这种情况下您必须使用 match

您也可以在内核源代码中 look up the error code。你没有说明你是运行Windows(不太可能),OSX还是Linux,所以我猜是Linux.

然后 lots of SO questions 解释了代码的含义,但我相信您知道如何搜索这些代码,既然您已经解决了问题。