我用 Python 编写了一些程序来打印一些消息。我希望该程序转到后台并将其消息打印在文件中。所以我在 bash 中写道:python program > message &
。问题:仅当我中断程序时才会出现该消息(使用 cat 或 vi)。有人可以解释一下问题出在哪里以及是否有简单的解决方案?
答案1
当 Python 的输出不是 tty 时,它使用完全缓冲。
使用python -u
-- 运行程序,这将使 python3 中的 stdout 和 stderr 以及 python2 中的 stdin 无缓冲。
请注意,这与后台运行的程序无关,而是与它的 stdout 不是 tty 这一事实有关。
答案2
冲洗可以帮助你吗?我希望链接到其他网站不是问题。看https://stackoverflow.com/questions/230751/how-to-flush-output-of-print-function