在rust中可通过Command::new来调用node.js、shell、python或其它进程,
1. 使用 spawn
将命令作为子进程执行,并返回它的句柄。 默认情况下,标准输入、标准输出和标准错误是从父级继承的,比如:
use std::process::Command;
Command::new("ls")
.spawn()
.expect("ls command failed to start");
此种情况下子进程不会阻塞父进程,如果父进程或所在函数退出,进程可能会被自动回收。
2. 使用 output
let output = Command::new("/Users/.../node/mac-darwin/node")
.arg("/Users/.../src/app.js")
.output()
.unwrap();
将命令作为子进程执行,等待它完成并收集其所有输出。
默认情况下,会捕获 stdout 和 stderr(并用于提供结果输出)。标准输入不是从父进程继承的,子进程从标准输入流中读取的任何尝试都将导致流立即关闭。
3. 使用 status
作为子进程执行命令,等待它完成并收集它的状态。 默认情况下,标准输入、标准输出和标准错误是从父级继承的。
use std::process::Command;
let status = Command::new("/bin/cat")
.arg("file.txt")
.status()
.expect("failed to execute process");
println!("process finished with: {status}");
assert!(status.success());
作为子进程执行命令,等待它完成并收集它的状态。 默认情况下,标准输入、标准输出和标准错误是从父级继承的。
回复 (0)
微信扫码 立即评论