Pythonスクリプトを実行しているアプリケーションを知る方法はありますか?
Textmate、Sublime Text 2、Terminal (私は Mac OSX を使用しています) など、複数のソースから Python を実行できます。どのツールが現在の python アプリを起動したかを正確に知るにはどうすればよいですか。
os
とモジュールを調べてみましたinspect
が、解決策が見つかりませんでした。
Pythonスクリプトを実行しているアプリケーションを知る方法はありますか?
Textmate、Sublime Text 2、Terminal (私は Mac OSX を使用しています) など、複数のソースから Python を実行できます。どのツールが現在の python アプリを起動したかを正確に知るにはどうすればよいですか。
os
とモジュールを調べてみましたinspect
が、解決策が見つかりませんでした。
psutilを使用して、かなりクロスプラットフォームな方法でこの種のことを行うことができます。
import psutil
import os
my_process = psutil.Process(os.getpid())
parent = my_process.parent
print "Parent process name: " + parent.name
psutil
ドキュメントから:
現在、単一のコード ベースを使用することで、32 ビットと 64 ビットの両方の Linux、Windows、OSX、および FreeBSD をサポートし、Python のバージョンは 2.4 から 3.3 までです。
名前だけでなく、実行可能パス (オプションのリストから選択している場合はより便利です) と、それが呼び出された完全なコマンドラインも取得できます。プロセスを実行したユーザー名も取得できます。パラメーターとそれらが使用可能なプラットフォームの詳細については、psutil クラスのドキュメントを参照してください。
余談ですが、可能であれば、呼び出し元のアプリケーションに応じて動作を変更する必要がないようにコードを構造化します。共有コード。ただし、コードのクリーンさよりも他の懸念が優先される場合があるため、psutil
要求したことを実行できるはずです。
unix 固有のままにしておきたい場合は、プロセスの親 PID を で取得できますos.getppid()
。それをプログラムIDに変換したい場合は、サブプロセスを実行して、関連するOS固有のPID-to-useful-dataツールを使用できます(オッズオン - ps
)