TAKOYAKING’s blog 一覧

TAKOYAKING’s blog

たこ焼き系

Rust: std::process::Commandを使ってvimを立ち上げる

やりたいこと

Rustで作ったスクリプトVimを実行して起動させたい。

失敗したこと

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が表示されました。