質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

9041閲覧

Pythonで、実行中のプロセスかどうかを判定する

hijiri

総合スコア61

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/02 02:39

pythonのtkinterを使って、画面にボタンを作りました。そのボタンを押したときにsubprocessを使ってファイルを実行しようとしています。

ただし、ボタンを押すたびに実行され、同じプロセスがいくつも実行されてしまいます。
まだプロセスが実行されていないときのみ実行し、既にプロセスが実行されているときはそのプロセスにフォーカスするという挙動をしたいと考えています。

[ボタンに割り当てた関数]

python

1def call(event): 2 cmd = "main.exe" 3 subprocess.call(cmd.split())

実行中のプロセスを全て取得して、同じものがないかを判定したらいいのかと思い

python

1 2cmd = 'tasklist' 3proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) 4for line in proc.stdout: 5 print(line)

で取得してみたものの、いまいち使い方がよくわかっておりません。
どのようにすればよろしいでしょうか?

どうぞよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

OSを書きましょう。Windowsですね?

それで結果は取れているので、あとは文字列処理です。

Python

1proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) 2running = Flase 3for line in proc.stdout: 4 if "main.exe" in str(line): 5 running = True

あるいは、

Python

1proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE) 2running = any("cmd.exe" in str(line) for line in proc.stdout)

投稿2020/04/02 03:40

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hijiri

2020/04/02 06:32

失礼いたしました。 はい、OSはwindowsでした。 教えていただいた方法で、必要な情報が取得できました。 本当にありがとうございました。 あとmain.exeを起動する際にsubprocess.callで呼び出していたので、main.exeが起動した状態でもう一度ボタンを押すとクラッシュしていました。 subprocess.Popenで呼び出したところ、クラッシュを回避して指定した挙動を行ってくれました。 お手数をおかけしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問