2013-02-06 35 views
3

我想知道是否可以殺死一個使用C#的python腳本。在C中kill python腳本#

在我正在開發的小應用程序中,python應用程序啓動到localhost:portnumber。應用程序的端口號總是相同的。

是否有可能,當應用程序已經運行(我通過獲取當前使用的端口列表來檢查它),使用某種命令殺死它?

我已經發現,在它沒有運行的情況下,我可以使用Process.Start();

+0

哪個操作系統應該工作? – defuz

+0

我主要爲Windows開發它(因此C#:P) – Brainscrewer

回答

1

您可以使用Process.Kill()殺死一個特定的進程啓動應用程序...
要找出過程就殺了你可以使用GetProcesses()並通過他們itterate ...

例如,這裏是你如何能殺死計算器(CALC.EXE):

foreach (Process process in Process.GetProcesses().Where(p => 
                 p.ProcessName == "calc")) 
{ 
    process.Kill(); 
} 

這將找到名爲「calc」的所有進程並殺死它們。

就你而言,如果你已經有一個Process對象(因爲你叫Process.Start()),你可以使用Kill()方法專門殺死那個對象。

+0

感謝您的回覆,但啓動的進程在taskmanager中都列爲'pythonw.exe'。除了他們正在收聽的端口號之外,他們之間沒有區別。上面的例子仍然工作嗎? – Brainscrewer

+0

差不多,因爲你需要這個過程獨特的'Id'屬性。 [這裏是一個例子](http://www.codeproject.com/Articles/4298/Getting-active-TCP-UDP-connections-on-a-box)瞭解如何根據開放端口獲取ProcessId。你可以用上面的例子來獲得你想要的東西。 (你會想用'p.Id'而不是'p.ProcessName') – Blachshma

+0

我會檢查一下,謝謝! – Brainscrewer