VIM: функция, проверяющая, запущена ли внешняя программа

VIM: функция, проверяющая, запущена ли внешняя программа

Используя функцию vim, я хотел бы проверить, запущена ли программа с помощью pgrep, и если она не запущена, то что-то сделать. В частности, я хочу добиться чего-то вроде этого:

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

Я предполагаю, что мне нужно использовать функцию 'system()', но я не уверен, как. Может кто-нибудь помочь?

EDIT: Мне бы хотелось решение, которое использует именно 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 ")

И используйте эту переменную в любом цикле, печати или используйте строковые функции.

Связанный контент