失敗したこと
std::process::Command - Rust
ここのサンプルのようにしたらできるのかなと思って、やってみました。
結果は失敗
use std::process::Command; Command::new("view") .arg("takoyaki.sh") .spawn() .expect("sh command failed to start");
これでも裏で動いてはくれているとは思うけど、vimがターミナル(前面)に現れない。
spawnしたらできませんでした。
子プロセスで実行するとドキュメントに書いてありましたので、子プロセスとして実行しない方法を探す必要があるみたいです。
うまくいった方法
process - Start another program then quit - Stack Overflow
結局、子プロセスにしないプロセスで実行すれば解決できそうっぽかったので、ここを参考にしてみました。
公式Docから
std::os::unix::process::CommandExt - Rust
fn exec(&mut self) -> Error
spawnと違って新しい子プロセスをフォークしない
と書いてあります。
成功(Unix Only)
use std::process::Command; use std::os::unix::process::CommandExt; fn view() { // Unix Only let _ = Command::new("view") .arg("takoyaki.sh") .exec(); }
いつものようにvimが表示されました。