Multithreading 在新的xterm中使用每个线程对Perl进行线程化

Multithreading 在新的xterm中使用每个线程对Perl进行线程化,multithreading,perl,xterm,Multithreading,Perl,Xterm,我正在创建一个线程程序,其中并非所有线程都是在开始时生成的。有些线程必须先等待一个或多个线程完成。这不会是一个问题,除非我想保持xterms打开以读取输出。在某些情况下,管道到文件不起作用,因为终端输出中有一些奇特的东西,它会覆盖自身 我一直在使用 my$xt_hold=“xterm-sl 5000-geometry 350x50+0+100-icographic-hold-e$cmd”;系统(xt_hold)创建xterm,但这不允许我在线程完成时加入线程。有没有其他方法可以让xterm保持打

我正在创建一个线程程序,其中并非所有线程都是在开始时生成的。有些线程必须先等待一个或多个线程完成。这不会是一个问题,除非我想保持
xterm
s打开以读取输出。在某些情况下,管道到文件不起作用,因为终端输出中有一些奇特的东西,它会覆盖自身

我一直在使用
my$xt_hold=“xterm-sl 5000-geometry 350x50+0+100-icographic-hold-e$cmd”;系统(xt_hold)
创建
xterm
,但这不允许我在线程完成时加入线程。有没有其他方法可以让xterm保持打开状态,并在完成时知道何时/加入线程


如果有更好的解决方案使用GNU
screen
,那么我可能会对此感兴趣,但我的主要选择是
xterm
,因为我对它比较熟悉。

我建议您使用另一种方法:队列


使用
Thread::Queue
可以告诉每个工作线程将结果放入队列。另一个线程(为输出创建)将从队列中读取数据并将其输出到终端(或文件或数据库等)。

在尝试回答此问题时,我意识到了一些问题。文本文件中显示的字符是颜色的控制字符,我猜还有删除/退格字符。这些只能由终端解释,因此我只能使用
less-r

查看原始终端中的日志文件。抱歉,可能会理解错误。你说的
my$xt_hold=“xterm-sl 5000…-e$cmd”
是指
my$xt_hold=`xterm-sl 5000…`
?您是使用backticks生成xterm shell还是将字符串放入
$xt_hold
?使用
system
调用它,因此
xt_hold
只是一个字符串。与实际代码相比,问题简化了。用你的评论更新了问题。