Windows Kill PID u Javi: Opseลพan vodiฤ
Upravitelj zadataka sustava Windows moลพda neฤe uvijek pruลพiti dovoljnu kontrolu nad procesima koji se izvode bez odgovora ili troลกe previลกe memorije. Kao programer, moลพete se susresti sa situacijama u kojima morate programski prekinuti proces. U ovom ฤemo ฤlanku raspravljati o tome kako prekinuti proces koristeฤi ID procesa (PID) u Javi i na Windows operativnim sustavima. Takoฤer ฤemo zaroniti u povezane biblioteke i funkcije koje to omoguฤuju.
Prvo, shvatimo rjeลกenje problema. Da bismo ubili proces u Javi, moramo izvrลกiti odgovarajuฤu naredbu iz operativnog sustava Windows koristeฤi Javinu Runtime klasu. Ova ugraฤena klasa pruลพa naฤin za suฤelje Java aplikacija s okruลพenjem u kojem se izvode.
Korak po korak rjeลกenje za zaustavljanje procesa putem PID-a
Da bismo izvrลกili ovaj zadatak u Javi, moramo slijediti ove korake:
- Dobiti duลพina trajanja primjer.
- Izvrลกite taskkill naredbu zajedno s PID-om pomoฤu exec metoda.
- Provjerite postoje li iznimke ili pogreลกke.
Raspravimo sada svaki od ovih koraka u detalje.
Objaลกnjenje koda
public class KillProcess { public static void main(String[] args) { int processId = 123; killProcess(processId); } public static void killProcess(int pid) { try { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec("taskkill /F /PID " + pid); process.waitFor(); } catch (IOException | InterruptedException e) { System.err.println("Unable to kill process with PID: " + pid); e.printStackTrace(); } } }
U gornjem kodu imamo klasu pod nazivom KillProcess koji sadrลพi glavnu metodu i statiฤku metodu tzv killProcess(). Prvo ฤemo razgovarati o killProcess() metoda.
- Koriลกtenje elektriฤnih romobila istiฤe killProcess() metoda uzima cijeli broj pid kao parametar, koji je ID procesa procesa koji ลพelimo prekinuti.
- Koristimo duลพina trajanja razreda getRuntime () metoda za dobivanje instance vremena izvoฤenja.
- Zatim izvrลกavamo Windowse taskkill zapovijed sa exec() metoda koju pruลพa duลพina trajanja klase, prosljeฤujuฤi ID procesa i /F zastavica za prisilno okonฤanje procesa.
- ฤekati() poziva se na generirani Proces objekt tako da ฤe trenutna nit ฤekati zavrลกetak vanjskog procesa.
- Ako postoji IOException or Prekinuta iznimka, hvatamo ove iznimke, ispisujemo poruku o pogreลกci i ispisujemo praฤenje stoga.
U glavnoj metodi prvo definiramo ID procesa ลพelimo ubiti i onda nazvati killProcess() metoda s navedenim ID-om procesa.
Povezane biblioteke i funkcije
Kako bismo programski ubili procese, koristili smo ugraฤenu Javu duลพina trajanja razred i njezin exec() metoda. Takoฤer smo koristili Javu Proces klasa za predstavljanje izlaza izvrลกavanja naredbe.
Evo nekih srodnih biblioteka i funkcija koje mogu biti od pomoฤi u sliฤnim scenarijima:
- Apache Commons Exec: Ova biblioteka pruลพa API za rukovanje izvrลกavanjem vanjskih procesa i preusmjeravanje tokova u Javi.
- Java ProcessBuilder: Alternativa za Runtime.exec() metoda, nudi fleksibilniji i prilagodljiviji naฤin za stvaranje i kontrolu pod-procesa.
Zakljuฤno, Java aplikacije mogu upravljati Windows procesima pomoฤu svojih ugraฤenih biblioteka i funkcija. Predstavljeno rjeลกenje odliฤna je polazna toฤka i moลพe se dodatno poboljลกati i prilagoditi potrebama specifiฤne aplikacije.