rust - 有没有办法在 Rust 代码中使用 unistd.h 中的函数?

标签 rust ffi sbrk

我正在尝试实现一个 malloc 类型的函数,但我不知道该用什么来代替 unistd.h 中为 C 找到的 sbrk 函数。有没有办法将 FFI unistd.h 转换为 Rust 程序?

最佳答案

The Rust Programming Language预订有关 FFI 的一些好信息。如果你使用 libc , 和 cargo你可以使用类似下面的东西。

extern crate libc;

use libc;

extern {
    fn sbrk(x: usize) -> *mut libc::c_void;
}

fn call_sbrk(x: usize) -> *mut libc::c_void {
    unsafe {
        sbrk(x)
    }
}

fn main() {
    let x = call_sbrk(42);
    println!("{:p}", x);
}

在您的 Cargo.toml 中使用类似以下的内容

[dependencies]
libc = "^0.2.7"

关于rust - 有没有办法在 Rust 代码中使用 unistd.h 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35582527/

相关文章:

rust - 发生移动是因为 `*arg` 的类型为 `String` ,该类型未实现 `Copy` 特征

rust - 通过Rust中的非静态函数数组进行图像配管

c - 为什么调用 sbrk(0) 两次会给出不同的值?

function - 在语言层面, `ccall` 到底是什么?

linux - sys_brk 的对齐要求是什么

linux - 如何找到程序中断的当前位置

multithreading - 如何使用 Condvar 来限制多线程?

rust - 返回值的宏的生命周期约束

Haskell 中 ADT 的指针

c - 当我从 native C 代码调用 Rust dylib 时,底层会发生什么?