我需要打开一个文件,并且我有一个&Path和一个i32用于标志。我可以使用 打开文件File::open(path),但这不允许我设置选项。文档说我应该使用OpenOptions,但我没有看到任何方法可以OpenOptions从我的i32. 我的标志的内容定义为open(2).
我使用的标志是526338,如果你想自己测试一下。
假设您使用的是类 Unix 系统,您可以使用以下方法OpenOptionsExt设置标志:
use std::fs::OpenOptions;
use std::os::unix::fs::OpenOptionsExt;
let file = OpenOptions::new()
.read(true)
.custom_flags(flags)
.open(&path)?;
Run Code Online (Sandbox Code Playgroud)
请注意,您必须单独设置访问模式标志(例如通过调用read或write),因此如果您需要它们,则必须自己处理它们。例如:
use std::os::unix::fs::OpenOptionsExt;
use libc::{O_RDONLY, O_RDWR, O_WRONLY};
let file = OpenOptions::new()
.custom_flags(flags)
.read((flags & O_ACCMODE == O_RDONLY) || (flags & O_ACCMODE == O_RDWR))
.write((flags & O_ACCMODE == O_WRONLY) || (flags & O_ACCMODE == O_RDWR))
.open(&path)?;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |