2017-02-27 3 views
0

Pythonでは、subprocess.Popen(cmd)は、cmdのプロセスを表すsubprocess.Popenインスタンスを返すことができます。私は、プロセスが聞いているポートによって、あるいはプロセスのPIDによって、そのようなインスタンスを得ることが可能かどうか疑問に思っています。Pythonで(pidまたはリスニングポートで)プロセスインスタンスを取得する方法は?

たとえば、subprocess.getProcessesByPort(port)またはsubprocess.getProcess(pid)のようなAPIがありますか?

私はこのような柔軟性がセキュリティ上の問題を引き起こす可能性があることを理解しており、これが不可能であれば驚くことはありません。私はこれまでこのモジュールを使用しておらず、より多くの洞察を求めていました。

ありがとうございます!

答えて

1

psutil packageは、クロスプラットフォームの方法で必要なものを提供する可能性があります。

+0

ありがとうございました!私はこのモジュールをちょうど確認しました。実際にはpidでプロセスを取得することができます。それで、インスタンスを 'subprocess'モジュールのものにキャストすることは可能ですか? – zzy

+0

私はそうではありません。 Popenのコンストラクタは**新しい**プロセスを呼び出します:POSIXでは、クラスはos.execvp()のような動作を使って子プログラムを実行します。 Windowsでは、クラスはWindowsのCreateProcess()関数を使用します。 [documentation](https://docs.python.org/3/library/subprocess.html#subprocess.Popen)を参照してください。一方、psutilには、プロセス抽象化のための独自のクラスがあります: 'psutil.Process'は、' subprocess.Popen'から必要な機能を提供するかもしれません。 –

+0

それは意味があります。どうもありがとうございます! – zzy

関連する問題