有没有办法用Rust的标准库指定O_DIRECT
,还是需要使用libc?
答案 0 :(得分:2)
您可以使用 Unix特定扩展程序特征os::unix::fs::OpenOptionsExt
:
use std::{fs::OpenOptions, os::unix::fs::OpenOptionsExt};
const O_DIRECT: i32 = 0o0040000; // Double check value
fn main() {
OpenOptions::new()
.read(true)
.custom_flags(O_DIRECT)
.open("/etc/passwd")
.expect("Can't open");
}
然而,O_DIRECT
的值是特定于平台的。我可能最终会使用libc来提供价值。