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