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

1

Usando uma função vim, gostaria de verificar se um programa está sendo executado usando o pgrep e, se ele não estiver sendo executado, 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 eu preciso usar a função 'system ()', mas não sei como. Alguém pode ajudar?

EDIT: Eu gostaria de uma solução que usa o pgrep em particular, e não de outra maneira

    
por geo909 23.06.2016 / 02:05

2 respostas

0
function! checkifrunning(mystring)
    if !system('pgrep "' . a:mystring . '"')
        " --do something--
    endif
endfunction

Tecnicamente, ! opera em Numbers , e converte uma String para um Number primeiro se receber uma String. No entanto, se não houver nenhum processo em execução, a saída de pgrep estará vazia, o que quando convertido em um Número é 0. Se houver processo em execução, a conversão em um Número não será zero.

Em vez de 'pgrep "' . a:mystring . '"' , você também pode fazer 'pgrep ' . shellescape(a:mystring) .

    
por 23.06.2016 / 08:54
0

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, imprima ou use funções de string também.

    
por 23.06.2016 / 08:15