2017-04-11 76 views
0

我想在python腳本中執行相當於killall -s USR1 termite的操作。按名稱發送信號給進程

當然,我可以做os.system('killall -s USR1 termite'),它工作正常,但對我來說這看起來不太優雅。

我看到os.kill(),但不是在這需要在PID作爲參數,這是我沒有(也可能存在相同名稱的多個進程)。

有沒有一種優雅和pythonic的方式來做到這一點?

回答

1

那麼你總是有子進程模塊,而不是操作系統,需要參數,但如果你沒有找到os.system或call()優雅,我相信你必須實現你自己的類來創建你的抽象層。

例與呼叫

from subprocess import call 

call("killall", "-s", "USR1", "terminate") 
+0

這不是更優雅,但至少更靈活一點。謝謝。 – Kaligule

0

您可以使用psutil包找到符合您的條件(如姓名)的所有進程。它有一個方法send_signal()(見docs)。