【发布时间】:2009-06-11 07:47:56
【问题描述】:
我有一个产生多个进程的应用程序。是否可以将子级的输出重定向到另一个隐藏终端,使其不会与父级输出混合,并让最终用户能够在需要时取消隐藏终端?
谢谢。
【问题讨论】:
-
你能改变产生子进程的程序吗?
我有一个产生多个进程的应用程序。是否可以将子级的输出重定向到另一个隐藏终端,使其不会与父级输出混合,并让最终用户能够在需要时取消隐藏终端?
谢谢。
【问题讨论】:
快速而肮脏的方法是将子进程的输出重定向到(临时)文件。
然后可以使用类似的命令启动跟踪该文件的终端
xterm -e tail -f /tmp/child1.out
此终端可以在需要时关闭和打开。
如果您不想将输出存储在文件中,您可以使用 fifo(请参阅mkfifo(1)),但是您将无法查看过去的输出,因为 fifo 不存储数据。
【讨论】:
从您的终端运行:
touch proc1.log
xterm -e tail -f proc1.log
topuch proc2.log
xterm -e tail -f proc2.log
/run/proc/1.sh >> proc1.log
/run/proc/2.sh >> proc2.log
现在您有 2 个终端跟随衍生进程的输出
【讨论】:
屏幕可以做到这一点。您可以使用新程序启动一个分离的屏幕。
类似:
screen -d -m -S my-emacs-session emacs foo.c
【讨论】: