【发布时间】:2016-06-05 14:01:36
【问题描述】:
我正在尝试实现一个 malloc 类型的函数,但我不知道要使用什么来代替 unistd.h 中 C 的 sbrk 函数。有没有办法将 unistd.h 转换为 Rust 程序?
【问题讨论】:
我正在尝试实现一个 malloc 类型的函数,但我不知道要使用什么来代替 unistd.h 中 C 的 sbrk 函数。有没有办法将 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"
【讨论】:
#[link(name = "")] 的东西,但不知道该放什么名字。
PROT_WRITE 显示为 _PROT_WRITE。有什么想法吗?