【发布时间】:2019-07-15 22:29:44
【问题描述】:
我的 rust 项目使用Command 来执行一个进程。
有时(低频)当我运行此代码时,对status.code() 的调用返回无。我通常使用 Mac OS Catalina Beta 1,rustc 1.36.0 - 但它也发生在 Travis 中(必须去那里找到 OS/rustc 的日志)。
我将此视为错误,但“随机”会导致本地和 travis 构建失败,所以现在我忽略它 - 但很高兴了解导致它的原因。
在失败的情况下,立即重新运行将使其成功。
let output = Command::new(&command)
.args(command_args)
.stdin(Stdio::inherit())
.stdout(Stdio::inherit())
.stderr(Stdio::piped())
.output()
.chain_err(|| "Error while attempting to spawn command to compile and run flow")?;
match output.status.code() {
Some(0) => Ok("Flow ran to completion".to_string()),
Some(code) => {
error!(
"Process STDERR:\n{}",
String::from_utf8_lossy(&output.stderr)
);
bail!("Exited with status code: {}", code)
}
None => Ok("No return code - ignoring".to_string()),
}
我的问题不是为什么会发生这种情况可能(我知道文档说“由信号终止”)而是为什么会发生这种情况,因为没有人 AFAIK向它发送信号,我严重怀疑任何 OOM 或其他此类问题。
【问题讨论】:
-
不知OS和Rust版本是什么?
-
@ArtemGr 我在github.com/rust-lang/rust/commits/master/src/libstd/process.rs 上没有发现任何显着变化。
-
对不起 - 该信息应该在那里。现在添加它.... Mac OS Catalina Beta 1, rustc 1.36.0
标签: rust