我正在使用术语::ReadLine::Gnu,并且遇到了信号处理方面的问题。给定下面的脚本和发送给脚本的术语信号,术语信号的处理程序直到按下enter键之后才会被触发。使用术语::ReadLine:Perl不会发生这种情况。
我读过这个术语::ReadLine::Gnu有自己的内部信号处理程序,但坦率地说,我不知道如何使用它们。
我已经回顾过变量尝试将rl_catch_signals变量设置为0,但这并没有帮助。理想情况下,我想使用Gnu信号处理程序,但我也会禁用它们。
确切地说,我需要术语处理程序在接收到信号后触发,而不是等待按下enter键。
任何帮助或建议都是非常感谢的!
#!/usr/bin/perl
use strict;
use warnings;
use Term::ReadLine;
$SIG{TERM} = sub { print "I got a TERM\n"; exit; };
my $term = Term::ReadLine->new('Term1');
$term->ornaments(0);
my $prompt = 'cmd> ';
while ( defined (my $cmd = $term->readline($prompt)) ) {
$term->addhistory($cmd) if $cmd !~ /\S||\n/;
chomp($cmd);
if ($cmd =~ /^help$/) {
print "Help Menu\n";
}
else {
print "Nothing\n";
}
}https://stackoverflow.com/questions/13316232
复制相似问题