VIM: función que comprueba si se está ejecutando un programa externo

VIM: función que comprueba si se está ejecutando un programa externo

Usando una función vim, me gustaría verificar si un programa se está ejecutando usando pgrep y, si no se está ejecutando, hacer algo. En particular, quiero lograr algo como esto:

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

Supongo que necesito usar la función 'system()', pero no estoy seguro de cómo. ¿Alguien puede ayudar?

EDITAR: Me gustaría una solución que use pgrep en particular, y no de otra manera

Respuesta1

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

Técnicamente!opera enNúmerosy convierte una cadena en un número primero si se le proporciona una cadena. Sin embargo, si no hay ningún proceso en ejecución, la salida de pgrepestará vacía, lo que cuando se convierte en un Número es 0. Si hay un proceso en ejecución, la conversión a un Número daría un valor distinto de cero.

En lugar de 'pgrep "' . a:mystring . '"', también puedes hacerlo 'pgrep ' . shellescape(a:mystring).

Respuesta2

Puedes usar como

:call system("pgrep process name ")

Para imprimir la salida,

:echo system("pgrep process name ")

Puede almacenar la salida en una variable como

:let a=system("pgrep process name ")

Y use esa variable en cualquier bucle, imprima o use funciones de cadena también.

información relacionada