Используя функцию 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 ")
И используйте эту переменную в любом цикле, печати или используйте строковые функции.