Pythonで呼び出しているシェルスクリプトがあります os.system("./name_of_script")
私はユーザー入力に基づいてこの呼び出しを行うことを好みます(つまり、ユーザーが「start」と入力すると呼び出しが完了し、ユーザーが「stop」と入力するとスクリプトが終了すると、Pythonプログラムの他の処理も実行されます)。この呼び出しは端末全体に焦点を当てていることがわかります(正しい単語はよくわかりませんが、シェルスクリプトが実行されるため、キーボード割り込みが受信されるまで、基本的にプログラム全体がこの呼び出しで停止します)。次に、キーボード割り込みを実行すると、シェルスクリプトの実行が停止し、その後の残りのコードが実行されるのはその瞬間だけです。これはPythonで可能ですか?
次のように、Popen
オブジェクトを作成するだけです。
p = subprocess.Popen(['./name_of_script'])
...完了までブロックせずに、指定されたプログラムを起動します。
後でそれがまだ完了しているかどうかを確認したい場合はp.poll()
、そのステータスの更新を確認できます。
これはos.system()
、シェルを含まないという点で(呼び出しているスクリプトがそれ自体を実行しない限り)、より高速で安全です。そのため、シェルショック、シェルインジェクションの脆弱性、またはその他のシェル関連の問題にさらされることはありません。不必要に。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加