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 ")
また、その変数を任意のループ、印刷、または文字列関数でも使用します。