課題
pythonのアプリを開発しています。
ユーザーがアプリを重複起動しないように管理したいというのが課題です。
app_main.py
からアプリが起動されるとすると、既にapp_main.py
のプロセスがある場合には、
新たにapp_main.py
を実行しても起動させない(exitさせる)、ということを考えています。
やったこと
その1
コマンドで、tasklistを実行すると、プロセス一覧が出ると思います。
subprocess.run("tasklist")
を実行すれば、pythonでタスク一覧は取得できました。
ただこれだと、
python.exe 3000 Console 1 20,000 K
というような表記になり、どのファイルが実行されているのかが区別できません。
その2
os.getpid()
を使って、プロセスIDは取得できます。
ですので、プロセスIDをテキストファイルにログとして残す&終了したらログは消す、というような管理方法も一応試しました。
しかしこれだと、pythonが正常終了しなかった場合に、ログにそのままIDが残りますので、あまり信頼できないと思いました。
その3
起動時に、自分以外のpythonプロセスを全て終了させる、という案も考えました。しかし乱暴すぎると思ってやっていません。
質問
あれこれ考えた結果では、やはりpython.exe
がどのパスから起動されているかを判別するのが一番話が早いように思えました。
どのようにすればよいのでしょうか。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/03/29 12:51