我正在bashRust 中编写一个克隆.我需要在用户输入时退出程序exit.在我的程序的前几次迭代中,在添加更复杂的功能之前,我曾经return离开了提示用户输入的循环.这个逻辑现在处于一个函数中,因为我实现内置shell函数的方式,所以当我return只是跳出函数回到控制循环中,而不是短路控制循环和结束程序.
我意识到当用户键入exit并退出循环时我可能会返回一个布尔值,但我想至少知道Rust是否有一种方法可以提前终止程序,类似于Java System.exit(),因为这对某些类型的程序很有用.
Vla*_*eev 46
std::process::exit() 确切地说 - 它使用指定的退出代码终止程序:
use std::process;
fn main() {
for i in 0..10 {
if i == 5 {
process::exit(1);
}
println!("{}", i);
}
}
Run Code Online (Sandbox Code Playgroud)
此函数使程序立即终止,无需展开和运行析构函数,因此应谨慎使用.
您可以直接使用C API.添加libc = "0.2"到Cargo.toml,和:
fn main() {
for i in 0..10 {
if i == 5 {
unsafe { libc::exit(1); }
}
println!("{}", i);
}
}
Run Code Online (Sandbox Code Playgroud)
Rust编译器无法验证调用C函数,因此需要unsafe块.程序使用的资源将无法正确释放.这可能会导致悬挂插座等问题.据我所知,退出程序的正确方法是以某种方式终止所有线程,然后进程将自动退出.