Merhabalar, çalışmakta olan bir programın alt işlemlerini nasıl print ettirebilirim bilgisi olan paylaşırsa sevinirim.
ÖRNEK
Merhabalar, çalışmakta olan bir programın alt işlemlerini nasıl print ettirebilirim bilgisi olan paylaşırsa sevinirim.
ÖRNEK
import psutil
current_process = psutil.Process()
children = current_process.children(recursive=True)
for child in children:
print('Child pid is {}'.format(child.pid))
Böyle bi kod buldum ama sorun şu istedigim pid’i nasıl kontrol ettirebilirim
Merhaba;
Aşağıdaki kodları inceleyebilirsiniz. Hangi process’in cocuklarını almak istiyorsanız o process’in ismini uzantısı ile birlikte yazın. Ben örnek olarak chrome’u girdim.
import psutil
def get_childs_of_process(child_name=None):
childs = []
parent_id = None
for process in psutil.process_iter(): # process'ler uzerinde bir iterasyon olusturuyoruz.
try:
if process.name() == child_name: # burayı anlarsınız.
parent_id = process.parent().pid # process'in parent id'sini alıyoruz.
break
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): # birkaç istisnayı yakalıyoruz.
pass
return psutil.Process(parent_id).children() # id'si parent_id olan process'in cocuklarını (childs) döndürüyoruz.
for x in get_childs_of_process("chrome.exe"): # burayı anlatmaya gerek yok.
print(x)
paylaşım için teşekkürler bunu isim yerine pid şekline çevirebilirmiyiz peki
Bildiğim kadarıyla hayır. Çünkü her process’e farklı id atanıyor ve bu id’ler sabit değil. Yani bir programın 1. çalıştırılmada aldığı id ile 2. çalıştırılmada aldığı id aynı değil. Hedef process’in id’sini bilirseniz gerisi kolay.
for x in get_childs_of_process(“chrome.exe”): ben bu bölümden bahsediyordum tırnak içerisinde isim yerine pid girsek
Anlıyorum.
Bu çok basit:
for x in psutil.Process("int tipinde pid girin").children():
print(x)
Ancak bunun öncesinde, hedef process’in id’sini nereden bileceksiniz?