Blog

Subprocess Terminate

Python Subprocess Kesme / How to kill subprocess with python

Üzerinde çalıştığım bir python web sunucu projesinde ana program çalışmasını sürdürürken arka planda bir alt programın başlatılmasını ve daha sonrasında web arayüzünden buton kullanarak bu alt process’i sonlandırmak istedim. Fakat kullandığım metodlar ile subprocess öldürme işleminde problem yaşadım.

1.>> proc = subprocess.Popen(komut,shell=True)

2.>> proc.kill( ) & proc.terminate()

Yukarıda yazdığım satırlar ile bir subprocess oluşturarak verdiğim komutun arka planda çalışmasını sağladım ve bu aşamada ana program çalışmaya devam etti. Fakat 2.satırda subprocess durdurmak istediğimde bu metodlardan yararlanamadığımı gördüm.

Daha sonra oluşturduğum subprocess’in PID değerini bir değişkene atayarak ana program içerisinde gerekli yerde (kill – 9 PID) komutu çalıştırırarak subprocess’i kesmeyi denedim. Fakat bu yöntemi kullandığımda 2 problemle karşılaştım.

1.Problem : Değişkene atamış olduğum PID değerinin sistem tarafından bulunamaması.

2.Problem : PID değeri atamasını yaptıktan sonra subprocess’in kesilmesi sırasında tüm ana programda kesmeye uğradı ve bu yöntemde patladı !

Stackoverflow üzerinde yaptığım araştırmada aşağıdaki yöntemi buldum ve denedim.

 

 

Bu kod parçası sayesinde yürütülen subprocess’in pid değeri kullanılarak os modülü içerisinde yer alan killpg metodunu kullanarak ve terminate sinyali göndererek process kesme işlemi yapılabiliyor. Fakat bu kod satırları normal bir subprocess üzerinde denediğimde çalıştığı gibi benim ana programım içerisinde hataya neden oldu.

Bu metod üzerinde aşağıdaki gibi değişiklikleri yaparak problemi ortadan kaldırdım ve subprocess kesme işlemini böylece gerçekleştirdim.

 

 


 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir