我正在创建一个线程程序,其中并非所有线程都在开始时生成。有些人必须等待一个或多个线程先完成。这不会是一个问题,除了我想保持xterm
打开以读取输出。在某些情况下,管道到文件不起作用,因为终端输出会有一些奇怪的东西在它覆盖自己。
我一直在用
my $xt_hold = "xterm -sl 5000 -geometry 350x50+0+100 -iconic -hold -e $cmd"; system($xt_hold);
创建xterm
,但这不允许我在完成时加入该线程。还有另一种方法可以保持xterm打开并知道何时完成线程/加入线程?
如果使用GNU screen
有更好的解决方案,那么我可能会对此感兴趣,但我的主要选择是xterm
,因为我对它更熟悉。
答案 0 :(得分:0)
我建议您使用其他方法:排队。
使用Thread::Queue
,您可以告诉每个工作线程将结果放入队列。另一个线程(为输出创建)将从队列中读取并将其输出到终端(或文件或DB等)。
答案 1 :(得分:0)
在尝试回答这个问题时,我意识到了一些事情。文本文件中显示的字符是颜色的控制字符,我猜还有删除/退格字符。这些只能由终端解释,因此我只能使用less -r
查看原始终端中的日志文件。