2013-01-09 62 views
0

有沒有辦法知道我正在運行python腳本的應用程序?如何知道哪個應用程序運行python腳本

我可以從多個來源,如Textmate,Sublime Text 2或Terminal(我在Mac OSX上)運行python。我怎麼知道,究竟哪個工具啓動了當前的python應用程序。

我試過尋找osinspect模塊,但找不到解決方案。

+0

你試過了什麼?如果你做'os.system(「Textmate」)'那麼你顯然是在運行... – Oz123

+1

他問的是相反的問題... python實例從哪裏啓動... – ATOzTOA

+0

我很好奇爲什麼你需要知道這一點,因爲它應該如何啓動。 –

回答

1

您可以使用psutil來執行此操作諸如此類的事情在相當跨平臺的方式:

import psutil 
my_process = psutil.Process(os.getpid()) 
parent = my_process.parent 
print "Parent process name: " + parent.name 

psutil文檔:

它目前支持Linux,Windows中,OSX和FreeBSD,32位和64位,與Python版本從2.4到3.3通過使用單個代碼庫。

除了名稱之外,您還可以獲得可執行文件路徑(如果您從選項列表中進行選擇,該路徑可能更有用)以及調用它的完整命令行。您還可以獲取運行該進程的用戶名。請參閱psutil classes documentation瞭解參數及其可用平臺的詳細信息。另外,如果可能的話,我會構造你的代碼,這樣你的不必必須根據調用的應用程序來修改你的行爲 - 最好讓調用應用程序傳入一個參數它修改共享代碼的行爲。但是,我很欣賞有時候其他問題優先於代碼清潔,所以psutil應該使您能夠按照您的要求進行操作。

0

如果您很樂意繼續關注unix,那麼您可以通過os.getppid()獲得進程的父PID。如果您想將其翻譯爲程序ID,則可以運行子進程以使用相關的操作系統特定的PID至有用數據工具(賠率爲 - ps

相關問題