VIM: função que verifica se programa externo está rodando

VIM: função que verifica se programa externo está rodando

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 pgrepestará 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.

informação relacionada