Mithilfe einer Vim-Funktion möchte ich mit pgrep prüfen, ob ein Programm läuft, und wenn es nicht läuft, etwas unternehmen. Insbesondere möchte ich so etwas erreichen:
function! checkifrunning(mystring)
if 'pgrep "mystring"' shows that something is NOT running
--do something--
endif
endfunction
Ich vermute, dass ich die Funktion „system()“ verwenden muss, bin mir aber nicht sicher, wie. Kann mir jemand helfen?
EDIT: Ich hätte gerne eine Lösung, die insbesondere pgrep verwendet und nicht auf andere Weise
Antwort1
function! checkifrunning(mystring)
if !system('pgrep "' . a:mystring . '"')
" --do something--
endif
endfunction
Technisch!
arbeitet aufZahlen, und konvertiert einen String zuerst in eine Zahl, wenn ein String angegeben ist. Wenn jedoch kein Prozess ausgeführt wird, pgrep
ist die Ausgabe leer, was bei der Konvertierung in eine Zahl 0 ergibt. Wenn Prozesse ausgeführt werden, ergibt die Konvertierung in eine Zahl einen Wert ungleich Null.
Statt 'pgrep "' . a:mystring . '"'
können Sie auch Folgendes tun 'pgrep ' . shellescape(a:mystring)
.
Antwort2
Sie können wie folgt verwenden:
:call system("pgrep process name ")
Um die Ausgabe auszudrucken,
:echo system("pgrep process name ")
Sie können die Ausgabe in einer Variablen wie speichern
:let a=system("pgrep process name ")
Und verwenden Sie diese Variable in jeder Schleife, jedem Druckvorgang oder auch in Zeichenfolgenfunktionen.