如何在Rust中打开新的控制台终端窗口?
在Rust中打开新终端窗口并执行命令
Windows平台实现
直接用std::process::Command调用Windows的cmd命令,复刻你Python代码的逻辑:
use std::process::Command; fn main() { // 启动新CMD窗口,执行python bb.py后保持窗口打开 Command::new("cmd") .args(["/C", "start", "cmd", "/K", "python", "bb.py"]) .spawn() .expect("无法启动新终端"); }
cmd /C:让当前CMD进程执行后续命令后退出start cmd /K python bb.py:start是Windows专属命令,用于启动独立窗口运行指定程序;/K参数保证命令执行完后终端窗口不关闭,换成/C则会执行完自动关闭窗口。
跨平台兼容方案
如果需要支持Linux或macOS,可以通过条件编译适配不同系统的终端命令:
use std::process::Command; fn main() { #[cfg(windows)] { Command::new("cmd") .args(["/C", "start", "cmd", "/K", "python", "bb.py"]) .spawn() .expect("无法启动新终端"); } #[cfg(target_os = "linux")] { // 以xterm为例,也可以替换成gnome-terminal、konsole等 Command::new("xterm") .args(["-e", "python bb.py"]) .spawn() .expect("无法启动新终端"); } #[cfg(target_os = "macos")] { Command::new("open") .args(["-a", "Terminal", "python", "bb.py"]) .spawn() .expect("无法启动新终端"); } }
注意:Linux下需要确保目标终端(如xterm)已安装,不同发行版可能默认终端不同,可根据实际情况替换命令。
内容的提问来源于stack exchange,提问作者fernetserret
相关产品推荐
相关产品推荐

