質問

bashスクリプトでは、私は書くことができます:

exec 2>&1
exec someprog

そしてsomeprogのstderr出力はstdoutにリダイレクトされます。

はPythonの os.exec* 機能?

これはLinux上でポータブル、ちょうど仕事である必要はありません。

役に立ちましたか?

解決

os.dup2(1, 2)する

照明の例

それは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を複製します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top