を使用subprocess.Popen(args, shell=True)
して " " を実行するとgcc --version
(例として)、Windows では次のようになります。
>>> from subprocess import Popen
>>> Popen(['gcc', '--version'], shell=True)
gcc (GCC) 3.4.5 (mingw-vista special r3) ...
そのため、期待どおりにバージョンをうまく印刷しています。しかし、Linux では次のようになります。
>>> from subprocess import Popen
>>> Popen(['gcc', '--version'], shell=True)
gcc: no input files
gcc が--version
オプションを受け取っていないためです。
このドキュメントでは、Windows で args がどうなるかを正確に指定していませんが、Unix では、「args がシーケンスの場合、最初の項目はコマンド文字列を指定し、追加の項目は追加のシェル引数として扱われます。 ." Popen(arglist)
IMHO Windows の方法の方が優れています。これにより、呼び出しを呼び出しと同じように扱うことができるからですPopen(arglist, shell=True)
。
ここで Windows と Linux の違いはなぜですか?