VIM: 外部プログラムが実行中かどうかを確認する関数

VIM: 外部プログラムが実行中かどうかを確認する関数

vim 関数を使用して、pgrep を使用してプログラムが実行中かどうかを確認し、実行されていない場合は何か実行したいと思います。具体的には、次のようなことを実現したいと考えています。

function! checkifrunning(mystring)
    if 'pgrep "mystring"' shows that something is NOT running
        --do something--
    endif
endfunction

'system()' 関数を使用する必要があると思いますが、方法がわかりません。誰か助けてくれませんか?

編集: 特にpgrepを使用するソリューションを希望します。他の方法ではありません

答え1

function! checkifrunning(mystring)
    if !system('pgrep "' . a:mystring . '"')
        " --do something--
    endif
endfunction

技術的には!動作する数字は、文字列が指定されている場合は、まず文字列を数値に変換します。ただし、実行中のプロセスがない場合、 の出力はpgrep空になり、数値に変換すると 0 になります。実行中のプロセスがある場合、数値への変換では 0 以外の値が返されます。

の代わりに'pgrep "' . a:mystring . '"'、 を実行することもできます'pgrep ' . shellescape(a:mystring)

答え2

次のように使用できます

:call system("pgrep process name ")

出力を印刷するには、

:echo system("pgrep process name ")

出力は次のように変数に保存できます。

:let a=system("pgrep process name ")

また、その変数を任意のループ、印刷、または文字列関数でも使用します。

関連情報