vim 기능을 사용하여 pgrep을 사용하여 프로그램이 실행 중인지 확인하고 그렇지 않으면 작업을 수행하고 싶습니다. 특히 다음과 같은 것을 달성하고 싶습니다.
function! checkifrunning(mystring)
if 'pgrep "mystring"' shows that something is NOT running
--do something--
endif
endfunction
내 생각엔 "system()" 함수를 사용해야 할 것 같은데 어떻게 해야 할지 모르겠습니다. 누구든지 도와줄 수 있나요?
편집: 나는 pgrep을 사용하는 솔루션을 원하지만 그 반대는 아닙니다.
답변1
function! checkifrunning(mystring)
if !system('pgrep "' . a:mystring . '"')
" --do something--
endif
endfunction
기술적으로 말하자면!
실행 대상숫자, 문자열이 주어지면 먼저 문자열을 숫자로 변환합니다. 그러나 실행 중인 프로세스가 없으면 의 출력은 pgrep
비어 있고 숫자로 변환되면 0이 됩니다. 실행 중인 프로세스가 있는 경우 숫자로 변환하면 0이 아닌 값이 제공됩니다.
대신에 'pgrep "' . a:mystring . '"'
, 당신도 똑같이 할 수 있습니다 'pgrep ' . shellescape(a:mystring)
.
답변2
당신은 다음과 같은 것을 사용할 수 있습니다
:call system("pgrep process name ")
출력물을 인쇄하려면,
:echo system("pgrep process name ")
다음과 같은 변수에 출력을 저장할 수 있습니다.
:let a=system("pgrep process name ")
또한 문자열을 사용하는 모든 루프, 인쇄 또는 함수에서 이 변수를 사용하십시오.