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 2012-03-09 20:06:32
我很確定,情況就是這樣。您可以通過閱讀腳本來檢查它:例如,查找字符串'「服務器正在運行,並查看它是如何打印的。是否有一些針對'sys.stdout.isatty()'的測試,或者它是否使用某種log()而不是print()。如果是這樣,那麼查找'log()'代碼等等。 您不能將isatty()設置爲任何值 - 系統會執行此操作。並且沒有什麼可以或者應該「窺探」 - 腳本只是在輸出重定向到文件時不打印該行。它可以檢測輸出是否被重定向。 – 2012-03-10 05:01:46
@Sandro我已經更新了答案,以說明以上所有...... – 2012-03-10 05:18:49