1
Djangoのmanager.pyの出力STDOUTまたはSTDERRではないプログラム出力?
> ./manage.py runserver 0.0.0.0:2869
Validating models...
0 errors found
Django version 1.3.1, using settings 'polling.settings'
Development server is running at http://0.0.0.0:2869/
Quit the server with CONTROL-C.
Error: That port is already in use.
> ./manage.py runserver 0.0.0.0:2869 >stdout 2>stderr
> cat stderr
Error: That port is already in use.
> cat stdout
>
私はセカンドランで出力をキャプチャしようとすると、なぜ私は空の文字列を取得していますを捕獲しようとしたとき、私はいくつかの本当に奇妙な行動を取得していますか?
はどうやって検出することができましたか?プログラムを呼び出してisatty()をtrueに設定する方法はありますか? (私はそれがこれを設定するBashのようなものだと仮定します) 出力には少なくとも「スヌープ」の方法がありますか? – Sandro
私はかなり確信しています。スクリプトを読むことでチェックすることができます。たとえば、サーバが "' 'で実行されている文字列を見つけ、それがどのように表示されるかを調べることができます。 'sys.stdout.isatty()'のテストがありますか、print()の代わりに何らかのlog()を使用しています。そうであれば、 'log()'コードなどを探します。 isatty()を何かに設定することはできません - システムはそれを行います。そしてあなたができることは何もありませんし、スヌープすべきでもありません。スクリプトは出力がファイルにリダイレクトされたときに**その行を出力しません。出力がリダイレクトされているかどうかを検出するだけです。 –
@Sandro上記をすべて説明する答えを更新しました... –