Çalışmakta olan bir programın alt işlemlerini görmek(print etmek)

Merhabalar, çalışmakta olan bir programın alt işlemlerini nasıl print ettirebilirim bilgisi olan paylaşırsa sevinirim.

ÖRNEK

1 Beğeni
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?

1 Beğeni