pythonからのexec-EDプロセスの標準出力へのリダイレクトstderrの?
-
22-09-2019 - |
質問
bashスクリプトでは、私は書くことができます:
exec 2>&1
exec someprog
そしてsomeprog
のstderr出力はstdoutにリダイレクトされます。
はPythonの os.exec*
機能?
これはLinux上でポータブル、ちょうど仕事である必要はありません。
解決
照明の例
それはstderrに文句を言うようにしましょうが、偽の引数で/bin/ls
を実行します。
$ python -c "import os; os.execl('/bin/ls', '', 'ffweew')" 1>/dev/null : ffweew: No such file or directory $ python -c "import os; os.execl('/bin/ls', '', 'ffweew')" 2>/dev/null $ python -c "import os; os.dup2(1, 2); os.execl('/bin/ls', '', 'ffweew')" 1>/dev/null $ python -c "import os; os.dup2(1, 2); os.execl('/bin/ls', '', 'ffweew')" 2>/dev/null : ffweew: No such file or directory $
最初の2つの呼び出しは、そのls
がstdoutに書き込まないことを証明し、stderrにエラーメッセージを書き込みます。
が3番目と4番目の呼び出しで、Pythonプログラムは、ファイル記述子2、所望の効果を達成するように、ファイル記述子1を複製します。
所属していません StackOverflow