C 结构体到 Rust 的错误映射

2023-11-29

出于教育目的,我尝试访问FILERust 中的结构:

unsafe {
    let passwd = libc::fopen("/etc/passwd".to_ptr(), &('r' as libc::c_char));
    let fp = &mut *(passwd as *mut MY_FILE);
    println!("flags={}, file={}", fp._flags, fp._file);
}

the MY_FILE我通过在 stdio.h 上运行 bindgen 获得的结构(我在 OS X 上):

bindgen /usr/include/stdio.h

Somehow _flags总是8对于以写入模式打开的文件(4 以读取模式打开),因此该标志似乎关闭(我用C代码来验证它确实不是 4 或 8)。然而文件指针似乎是正确的。什么可能导致这种情况?我是否从错误的头文件中提取了绑定?有什么我需要添加的吗#[repr(C,)]属性?

Here是包括结构的完整代码。

这是来自的后续问题之前的一个问题


首先,您的实施ToPtr邀请不健全的代码。转载于此:

// code in italics is wrong
impl ToPtr for str {
    fn to_ptr(&self) -> *const i8 {
        CString::new(self).unwrap().as_ptr()
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 结构体到 Rust 的错误映射 的相关文章

随机推荐

  • Java - 连接关闭后无法使用 ResultSet

    我在关闭与 MySQL 的连接时遇到问题 我收到错误 java sql SQLException 结果集关闭后不允许执行操作 My code public static ResultSet sqlquery String query Res
  • 依赖注入和实体框架

    我正在使用 MVVM light 及其 Ioc 来做一个 wpf 应用程序SimpleIoc 我实现了这样的存储库模式 public interface ICrud
  • 解释双重检查锁定中的竞争条件

    void undefined behaviour with double checked locking if resource ptr 1 std lock guard
  • C# - 文件上传到服务器后损坏

    我使用以下源代码上传文件excel和pdf 但是将文件移动到服务器后 文件已损坏 我认为问题出在编码过程上Encoding UTF8 GetBytes sourceStream ReadToEnd 但我不知道如何解决 public stat
  • 在 Android 中启动 GPS 设置屏幕

    以下代码在三星设备中启动 GPS 设置屏幕 但在 HTC 设备中启动设置的安全屏幕 我如何编写代码 以便它独立于设备启动 GPS 屏幕 请帮助是否有任何替代解决方案 final ComponentName toLaunch new Comp
  • SQL 错误:ORA-00942 表或视图不存在

    我使用 SQL Developer 在创建用户并使用所有所需权限与该用户建立另一个连接后 使用系统用户与数据库建立了连接 但是当我尝试继续以下操作时 出现 SQL 错误 ORA 00942表或视图不存在 INSERT INTO custom
  • 创建每列有多个标题的数据框并在循环中填充数据框

    我想创建一个每列有多个标题的 Pandas 数据框 并使用循环中的数据逐行填充数据框 我以前创建过数据框 但这对于我真正想做的事情来说似乎非常复杂 而且我不知道从哪里开始 Example step list range 1 5 for i
  • 从内容脚本访问窗口变量[重复]

    这个问题在这里已经有答案了 我有一个 Chrome 扩展程序 它试图在每个浏览的 URL 以及每个浏览器 URL 的每个 iframe 上查找变量是否存在window my variable name exists 所以我写了这个小内容脚本
  • pygame.display.toggle_fulscreen() 不起作用

    所以 我试图让 python 切换到全屏 现在我认为我需要做的就是 screen pygame display toggle fullscreen 我认为这已经足够了 但它给了我这个traceback error Traceback mos
  • Hive 表中匹配大小的随机样本

    我有一个蜂巢表activity有柱子userid itemid and rating 可能的评级为 1 和 0 其中正面评级 1 多于负面评级 0 我需要提取一个正面和负面评级数量大致相等的样本 我需要这个样本尽可能大 因此想要对所有负面评
  • C 中单个竖线的含义是什么 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 有人向我展示了以下代码片段并询问它的含义 if pFCT gt FBMap VBQNum
  • 如何将最新的 c++ protobuf (3.2) 与 Android NDK 集成/安装?

    早期的protobuf 3 0版本很容易集成 但最新版本3 2存在问题 它也只是编译和构建所有不相关的 Android cc 文件组件 如果我们遵循最新分支的路径git for c 原型 按照步骤构建它 然后它生成 15 MB 的 SO 文
  • 比较两个文件列表,忽略一个列表中的文件扩展名

    我有两个清单 list1 image1 png image2 png image3 png image3 png list2 image1 pdf image2 eps image3 ps 我想创建一个包含 list1 名称的列表 如果该名
  • 基于另一个选择框更新一个选择框 (Ruby on Rails)

    我是 Ruby on Rails 的新手 需要一些帮助 我正在开发一个可用于跟踪汽车的网络应用程序 有两种模型 一种代表品牌 萨博 本田 丰田等 另一种代表型号 思域 Miata PT Cruiser 等 他们有一个 has many 关系
  • Java 未绑定通配符泛型

    在中使用通配符类型泛型有什么优点吗 Bar课结束后完全跳过它们 public class Foo
  • 如何从groovy返回值到java

    我有一个 jsp 页面绑定到一个运行 groovy 脚本的 servlet 我可以从 servlet 获取 groovy 脚本 但是脚本运行后如何将groovy脚本的响应返回到servlet以显示在jsp页面中 我的java servlet
  • 如果用户未使用 Laravel 5.4 登录,则限制对页面的访问

    我创建了一个仪表板页面 我希望仅当用户登录时才能访问它 登录和注册是通过php artisan make auth命令 有什么技巧或想法可以实现这一点吗 只需将 Auth 中间件添加到您的路由中即可 Route get dashboard
  • C# Windows 应用商店应用程序为 UsbDevice 返回 null

    作为 Windows 应用商店应用程序开发的新手 我正在开发一个必须连接到多个 USB 设备的应用程序 我正在使用 VS 2013 社区 和 C 例如 使用以下方法获取附加网络摄像头的列表 var devices await DeviceI
  • has_many :通过 Rails 中的 has_and_belongs_to_many

    在 Rails 中 使用 has many through 和 has and belongs to many 的效果是什么 考虑有两个模型 帖子和标签 它们具有多对多关系 如下所示 class Tag lt ActiveRecord Ba
  • C 结构体到 Rust 的错误映射

    出于教育目的 我尝试访问FILERust 中的结构 unsafe let passwd libc fopen etc passwd to ptr r as libc c char let fp mut passwd as mut MY FI