gpt4 book ai didi

rust - 当在 rust 迹中执行命令时,程序结束

转载 作者:行者123 更新时间:2023-12-03 11:45:34 26 4
gpt4 key购买 nike

我正在尝试执行docker run --name test ubuntu命令,但是该命令运行时该程序将在第4行结束。

我想在执行命令后继续执行程序。我怎么解决这个问题?

代码:

let argument = format!("docker run --name test ubuntu");
let mut cmd = std::process::Command::new("sh");
let cmd = cmd.arg("-c").arg(argument);
// the program will end here
assert!(cmd.status().unwrap().success());

最佳答案

我不确定当您说“程序将在此处结束”时的意思。但是,从您的代码开始,该程序应在assert行上阻塞,直到命令执行完毕。由于状态仅在命令退出时可用,因此您还能如何获取所要求的状态?

如果您希望程序与启动的命令保持并行运行,则应使用 spawn 而不是status:

let argument = format!("docker run --name test ubuntu");
let mut cmd = std::process::Command::new("sh");
let cmd = cmd.arg("-c").arg(argument);
// the program will end here
let child = cmd.spawn().unwrap();

这样,您的程序就可以继续执行。如果需要,可以稍后等待命令完成并获得退出状态,然后使用 child.wait() (顾名思义, wait将阻止程序等待子进程完成)或 child.try_wait() (如果子进程返回子进程,则返回 None)尚未退出,因此其状态不可用)。

关于rust - 当在 rust 迹中执行命令时,程序结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61789259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com