
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になります。実行中のプロセスがある場合は、数値に変換するとゼロ以外の値が提供されます。
代わりに'pgrep "' . a:mystring . '"'
、あなたも同じことができます'pgrep ' . shellescape(a:mystring)
。
答え2
次のようなものを使用できます
:call system("pgrep process name ")
印刷物を印刷するには、
:echo system("pgrep process name ")
次の変数に出力を保存できます。
:let a=system("pgrep process name ")
また、文字列を使用するすべてのループ、印刷、または関数でこの変数を使用してください。