有没有办法在 Rust 代码中使用 unistd.h 中的函数?
Is there a way to use functions from unistd.h in Rust code?
我正在尝试实现 malloc 类型的函数,但我无法弄清楚要使用什么来代替 unistd.h 中为 C 找到的 sbrk 函数。是否有任何方法可以实现 FFI unistd.h 进入 Rust 程序?
The Rust Programming Language book as some good info on FFI. If you use libc
, and 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"
我正在尝试实现 malloc 类型的函数,但我无法弄清楚要使用什么来代替 unistd.h 中为 C 找到的 sbrk 函数。是否有任何方法可以实现 FFI unistd.h 进入 Rust 程序?
The Rust Programming Language book as some good info on FFI. If you use libc
, and 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"