提问人:ajnobre 提问时间:6/28/2023 最后编辑:Jmbajnobre 更新时间:6/28/2023 访问量:147
在 Tauri 项目中运行时从可执行文件实时发出日志消息
Emit log messages in real-time from executable while running in Tauri project
问:
我正在处理一个 Tauri 项目,其中我有一个名为 run_executable 的命令,用于执行外部可执行文件。我想使用 Tauri 的事件系统将日志消息从可执行文件实时发送到前端。但是,目前,只有在可执行文件完成运行后才会发出日志消息。
这是我的代码的简化版本:
#[tauri::command(async)]
pub async fn run_executable(window: Window) {
let mut cmd = Command::new("../executables/pwdemo");
cmd.stdout(Stdio::piped());
let mut child = cmd.spawn().expect("Failed to execute command");
let stdout = child.stdout.take().expect("Failed to capture stdout");
let reader = BufReader::new(stdout);
tokio::spawn(async move {
let lines = reader.lines();
for line in lines {
window.emit("logMessage", Some(line.expect("Failed to read line")))
.expect("Failed to emit event");
}
});
let _ = child.wait().expect("Failed to wait for child process");
}
我希望日志消息在可执行文件可用后立即实时发出,而不是等待可执行文件完成运行。
我使用了 AI 生成的代码,但我仍然无法实现我需要的东西。在此示例中,我认为当可执行文件生成更多输出日志消息时,它不会更新。reader.lines()
关于如何实现这一目标的任何建议或示例将不胜感激。提前感谢您的帮助!
答: 暂无答案
评论