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。如果有进程正在运行,则转换为数字将给出非零值。

相反'pgrep "' . a:mystring . '"',你也可以这样做'pgrep ' . shellescape(a:mystring)

答案2

你可以使用像

:call system("pgrep process name ")

要打印输出,

:echo system("pgrep process name ")

您可以将输出存储在变量中,例如

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

并且,在任何循环、打印或使用字符串函数中使用该变量。

相关内容