[解決済み] サブプロセスにおける「shell=True」の実際の意味
質問
を使用して異なるプロセスを呼び出しています。
subprocess
モジュールを使用します。しかし、疑問があります。
以下のコードで
callProcess = subprocess.Popen(['ls', '-l'], shell=True)
そして
callProcess = subprocess.Popen(['ls', '-l']) # without shell
どちらも動作します。ドキュメントを読んで、私は次のことを知りました。
shell=True
は、シェルを通してコードを実行することを意味します。つまり、不在の場合は、プロセスが直接開始されることを意味します。
あるプロセスを実行し、その出力を取得する必要があるのです。シェルの中から呼び出すのと、シェルの外から呼び出すのとでは、どんな利点があるのでしょう。
解決方法は?
シェル経由で呼び出さないことのメリットは、「謎のプログラム」を呼び出さないことです。 POSIXでは、環境変数
SHELL
Windowsでは、ボーンシェルの子孫は存在せず、cmd.exeのみです。
そのため、シェルを起動すると、ユーザーが選択したプログラムが起動され、プラットフォームに依存することになります。 一般的に言って、シェル経由の起動は避けてください。
シェル経由の起動では、シェルの通常のメカニズムに従って、環境変数やファイル・グロブを展開することができます。 POSIX システムでは、シェルはファイル・グロブをファイルのリストに展開します。 Windows では、ファイル・グロブ ("*.*" など) はシェルによって展開されません (ただし、コマンド・ライン は cmd.exeで展開されます)。
環境変数の展開やファイルグロブが必要だと思う方は
ILS
1992年頃、シェル経由でサブプログラムの呼び出しを行うネットワークサービスに対して行われた攻撃。 その例として、さまざまな
sendmail
を含むバックドア
ILS
.
まとめると
shell=False
.
関連
-
FacebookオープンソースワンストップサービスpythonのタイミングツールKats詳細
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み] shell=True で起動した python サブプロセスを終了させる方法
-
[解決済み] オブジェクト名の前のシングルアンダーコアとダブルアンダーコアの意味は何ですか?
-
[解決済み] シェルコマンドの実行と出力のキャプチャ
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python関数の高度な応用を解説
-
python string splicing.join()とsplitting.split()の説明
-
Python カメの描画コマンドとその例
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Pythonの@decoratorsについてまとめてみました。
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない