为什么在写入打开的文件时会出现错误文件描述符错误?
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 解释了代码的含义,但我相信您知道如何搜索这些代码,既然您已经解决了问题。
在文件 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 解释了代码的含义,但我相信您知道如何搜索这些代码,既然您已经解决了问题。