![VIM: função que verifica se programa externo está rodando](https://rvso.com/image/89153/VIM%3A%20fun%C3%A7%C3%A3o%20que%20verifica%20se%20programa%20externo%20est%C3%A1%20rodando.png)
Usando uma função vim, gostaria de verificar se um programa está sendo executado usando pgrep e, se não estiver, faça alguma coisa. Em particular, quero alcançar algo assim:
function! checkifrunning(mystring)
if 'pgrep "mystring"' shows that something is NOT running
--do something--
endif
endfunction
Meu palpite é que preciso usar a função 'system()', mas não sei como. Alguém pode ajudar?
EDIT: Eu gostaria de uma solução que usasse o pgrep em particular, e não de outra forma
Responder1
function! checkifrunning(mystring)
if !system('pgrep "' . a:mystring . '"')
" --do something--
endif
endfunction
Tecnicamente!
opera emNúmerose converte uma String em um Número primeiro se for fornecida uma String. Porém, se não houver nenhum processo em execução, a saída de pgrep
estará vazia, que quando convertida para um Número será 0. Se houver um processo em execução, a conversão para um Número resultará em valor diferente de zero.
Em vez de 'pgrep "' . a:mystring . '"'
, você também poderia fazer 'pgrep ' . shellescape(a:mystring)
.
Responder2
Você pode usar como
:call system("pgrep process name ")
Para imprimir a saída,
:echo system("pgrep process name ")
Você pode armazenar a saída em uma variável como
:let a=system("pgrep process name ")
E use essa variável em qualquer loop, impressão ou use funções de string também.