被放弃的程序的 STDOUT 指向哪里?

被放弃的程序的 STDOUT 指向哪里?

作为后续行动这个问题,我想知道我运行的程序的 STDOUT 和 STDERRdisown -h被重定向到哪里。

答案1

disown不会改变程序的 STDOUT/ERR。它们仍将转到您重定向它们的位置(使用>等)。如果您没有重定向它们,它们将继续进入您启动程序的终端(直到您关闭该终端,在这种情况下它们将被丢弃)。

为了说明这一点,在终端中运行以下命令:

bash -c 'while true; do sleep 1; echo hi; done' &

这将每秒打印一次“hi”(这会让你非常恼火 ;-))。如果你disown在启动后运行程序,“hi”将继续。你需要找到 shell 的 PID(例如使用 ps)并终止它以使其停止。

编辑:

根据评论,也许您真正想要做的是在disown编辑程序并关闭程序运行的终端后恢复程序的输出。这个问题解释了这一点:事后使用 tcsh 进行远程 nohup(感谢江湖郎中)。

相关内容